从ef6模型tt中拷贝代码到自建tt中,出现上述错误
解决方法
在命名空间外加下面函数
<#+
public static void ArgumentNotNull<T>(T arg, string name) where T : class
{
if (arg == null)
{
throw new ArgumentNullException(name);
}
}
#>
值得注意是
//EdmMetadataLoader loader=new EdmMetadataLoader(textTransform.Host, textTransform.Errors);
//EdmItemCollection itemCollection = (EdmItemCollection)loader.CreateEdmItemCollection(inputFile);
var itemCollection = (EdmItemCollection)(new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile));
``
注释代码和不注释是相同的,唯一不同是要加强制类型转换,
没注释代码是ef6中模板中默认的
`
项目完整代码如下
```csharp
<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF6.Utility.CS.ttinclude"#><#@
output extension=".cs"#><#
const string inputFile = @"..\\DEMO.OA.Model\\DataModel.edmx";
var textTransform = DynamicTextTransformation.Create(this);
var code = new CodeGenerationTools(this);
var ef = new MetadataTools(this);
var fileManager = EntityFrameworkTemplateFileManager.Create(this);
//EdmMetadataLoader loader=new EdmMetadataLoader(textTransform.Host, textTransform.Errors);
//EdmItemCollection itemCollection = (EdmItemCollection)loader.CreateEdmItemCollection(inputFile);
var itemCollection = (EdmItemCollection)(new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile));
#>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DEMO.OA.Model;
namespace DEMO.OA.IDAL
{
<#
foreach(EntityType entity in itemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
#>
public partial interface I<#=entity.Name#>Dal : IBaseDal<<#=entity.Name#>>
{
}
<#}#>
}
<#+
public static void ArgumentNotNull<T>(T arg, string name) where T : class
{
if (arg == null)
{
throw new ArgumentNullException(name);
}
}
#>