c# - 在 tt 文件上“运行自定义工具”时自动生成自定义代码
问题描述
我在项目“DAL”中有这个 edmx,首先是数据库。
但是 edmx 的 tt 文件在另一个项目“DomainModel”中。
两个项目都在同一个解决方案中。
现在,每当我在数据库中创建新表,从数据库更新模型时,我必须手动重新插入IEntity
并public EntityState EntityState { get; set; }
在 tt 文件上从“运行自定义工具”生成的每个表类中。
public partial class newTable : IEntity
{
public EntityState EntityState { get; set; }
}
public partial class oldTable : IEntity
{
public EntityState EntityState { get; set; }
}
我还必须手动重新插入Configuration.LazyLoadingEnabled = false;
并Configuration.ProxyCreationEnabled = false;
在以下代码中
public partial class myEntities : DbContext
{
public myEntities()
: base("name=myEntities")
{
Configuration.LazyLoadingEnabled = false;
Configuration.ProxyCreationEnabled = false;
}
}
无论如何我可以自动化这些吗?尤其是第一部分,有数百张桌子。
解决方案
您可以尝试调整tt
,但我建议您使用部分功能,它是有目的的:)。将所有修改放在单独的文件中,该文件不会在每次模型更新时被替换。这仍然是手动或半手动工作,但您只需要这样做一次,然后您只需要为新表更新它。
// DbModelPatches.cs
public partial class newTable : IEntity
{
public EntityState EntityState { get; set; }
}
public partial class oldTable : IEntity
{
public EntityState EntityState { get; set; }
}
如果默认构造函数是由您生成的,tt
您无法在部分文件中替换它,但您可以定义另一个,参数化,并将所有更改放在那里。
public partial class myEntities : DbContext
{
public myEntities(string name)
: base("name={name}")
{
Configuration.LazyLoadingEnabled = false;
Configuration.ProxyCreationEnabled = false;
}
// or static factory method:
public static myEntities CreateContext()
{
var res = new myEntities();
res.Configuration.LazyLoadingEnabled = false;
res.Configuration.ProxyCreationEnabled = false;
return res;
}
}
推荐阅读
- python - 如何将 MONGODB 集合导出为 json 或 csv 格式,mongodb 在 docker 容器内
- apache - 主机名在另一个 Tomcat 服务器中不起作用
- java - 如何用随机图像填充 gridLayout 8x8
- xml - 为什么我们不能为 XML 命名空间使用随机字符串而不是 URI?
- c# - 允许用户向网站添加图片
- c - 静态变量有什么问题吗?
- python - 如何从拟合图像中提取点扩散函数?
- reactjs - 在 React 中更新事件:顺序?
- java - Java 我可以将函数添加到集合中以按顺序执行吗?
- php - PHP MySQL选择并回显为json