gpt4 book ai didi

entity-framework - EF 4.2 忽略代码中的单个属性优先映射到复杂类型

转载 作者:行者123 更新时间:2023-12-02 07:08:14 26 4
gpt4 key购买 nike

我正在尝试实现一个相对简单的概念,但看起来 EF 代码优先并没有一种简单的方法来执行此操作。基本上我有一个地址类,它也有一个 County 属性。我正在映射到现有表。在某些情况下,该表有一个县字段,而在其他情况下则没有。所以我只是想忽略它不适用的县。

Fluent API 允许映射到复杂类型的属性:

.Property(Function(c) c.HomeAddress.County).HasColumnName("COUNTY") 

太好了。但显然它不允许你忽略它:

.Ignore(Function(c) c.HomeAddress.County)

抛出错误:

表达式“p => p.Address.County”不是有效的属性表达式。该表达式应表示一个属性:C#:'t => t.MyProperty' VB.Net:'Function(t) t.MyProperty'。

这在 Fluent API 中确实应该被允许,并且应该像上面的语句一样简单。

所以按照惯例,代码首先认为它是一个属性,然后你得到错误:

“无效的列名称‘Address_County’。

这真的很糟糕!所以我基本上坚持使用这个属性。我怎么忽略它???有什么想法吗?

我不想删除该属性,也无法将其添加到表中。我尝试添加注释,并且代码可以工作,但是在我需要它的情况下我无法映射它。

我希望有一个简单的解决方案,或者至少有一个适当的解决方法。

最佳答案

6.1.1可以忽略复杂类型属性(不知 Prop 体是什么时候开始支持的)

public class MyDbContext
: DbContext
{
//...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder
.ComplexType<[complex-type-class]>()
.Ignore(x => x.[member-to-ignore]);

}
//...
}

关于entity-framework - EF 4.2 忽略代码中的单个属性优先映射到复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8751488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com