我正在尝试将新属性添加到我的Base库模型中,我从nuget安装它并尝试在我安装Base的项目中添加新属性
基地模型
public class Product
{
int Id{ get; set; }
string Name{ get; set; }
string Status{ get; set; }
}
在我的项目中,我想添加一个名为Code(string)的新属性,而不更改模型名称
我尝试通过继承基本上下文并忽略下面的基本模型
来做到这一点public class PDataContext : DataContext
{
public PDataContext() : base()
{
Configuration.LazyLoadingEnabled = false;
Database.SetInitializer<PDataContext>(null);
}
public new DbSet<Product> Products { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Ignore<ClientApi.Base.Models.Product>();
}
}
上述内容无效,因为它引发了异常"The entity type Product is not part of the model for the current context."
我知道最佳方法吗?
答案 0 :(得分:0)
您没有在帖子中包含它,但我认为您要使用的实体继承自Product并包含一个额外的属性Code
这样的内容?
public class MyProduct : Product
{
public string Code { get; set; }
}
在这种情况下,您可以在上下文中使用MyProduct
而不是Product
:
public class PDataContext : DataContext
{
public PDataContext() : base()
{
Configuration.LazyLoadingEnabled = false;
Database.SetInitializer<PDataContext>(null);
}
public new DbSet<MyProduct> Products { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<MyProduct>().ToTable("Product");
}
}