C#”;,EF:某些类上的Fluent Ignore Interface方法
本文关键字:Fluent Ignore 方法 Interface EF | 更新日期: 2023-09-27 18:20:41
所以我有我的模型,其中一个叫BaseBird。BaseBird是一个包含在我的其他模型中的模型;火鸡,鸡肉,鸵鸟。因此,我创建了一个名为IBaseBird的接口,并将其委托给BaseBird属性。
public class Turkey: IBaseBird
{
public virtual BaseBird BaseBird { get; set; }
public string BeakType
{
get { return BaseBird.BeakType; }
set { BaseBird.BeakType = value; }
}
不幸的是,这有一个副作用,当我创建迁移时,它会在模型上创建所有BaseBird列。我已经看到并尝试实现各种忽略列的方法,如
foreach (var property in typeof (IBaseBird).GetProperties())
{
modelBuilder.Types().Configure(m => m.Ignore(); );
但这忽略了我的整个数据模型的列,包括我的BaseBird模型。
然后我试着把它硬塞进modelBuilder中,但我似乎找不到一种只通过名称来动态引用属性的方法。
foreach (var property in typeof (IBaseBird).GetProperties())
{
modelBuilder.Entity<Turkey>().Ignore(t => t.property.Name);
}
但这只会引发错误,因为我还没能弄清楚如何动态访问属性。
非常感谢在这方面的任何帮助。
好的,所以我找到了一个类似的解决方案。解决方案是创建一个名为BaseBird的抽象类,它是名为SimpleBird的类的简单副本。然后,我把我希望子类拥有的所有方法都放在一个名为IBaseBird的接口上,当然,BaseBird实现了这个接口。
下一步是确保子类扩展BaseBird。现在,用[Ignore]注释BaseBird的所有属性。
通过这样做,我可以保持我的委派行为,同时仍然在整个域中使用接口。