【发布时间】:2018-10-30 10:27:02
【问题描述】:
我是C# 和EntityFramework 的新手,我需要维护一个活跃的软件。
我需要创建一个新表,所以我在数据库中创建了它,然后使用 EntityFramework 更新了我的模型。
但是,看起来以前的开发人员一直在直接在生成的代码(Mode.Context.cs 类)中编写代码,EntityFramework 在更新模型时正在擦除它并完全重写它。
所以我做了一个新的局部类模型。它看起来像这样:
public partial class Model : DbContext, IModel
{
public void SomeRandomMethod();
}
生成的模型如下所示:
public partial class Model : DbContext
{
public Model()
: base("name=Model")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<RandomTable> ARandomTable { get; set; }
}
然而,问题在于,以前,模型使用IDbSet 而不是DbSet,并且接口IModel 要求IDbSet<RandomTable> ARandomTable
处理这个问题的正确方法是什么?
【问题讨论】:
-
稍微更新一下代码,这个
IModel只能请求SomeRandomMethod()。清楚你的代码是什么,以及为什么你需要 IDbSet 中的 I。 -
如果生成工具使用的是 T4 则只需更新 T4 模型即可。
-
@CodeNotFound 谢谢,用模板成功了。只需要提示看什么:)
-
您使用的是哪种生成工具?如果是 T4 模板,则转到文件并查看设置
IDbSet的行 (CTRL + F)。保存文件并重新生成代码。
标签: c# entity-framework edmx-designer