gpt4 book ai didi

c# - 鉴别器大于 0 的 Entity Framework 代码优先 TPH

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:42 25 4
gpt4 key购买 nike

我在 EF4 CTP5 中定义一个模型,仅当 id 的值大于 0 时我才需要映射继承的实体。代码如下所示。

public class Parent
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}

public class Child : Parent
{
public int SchoolID { get; set; }
}

在 OnModelCreating 方法中...

modelBuilder.Entity<Parent>().Map<Child>(
reg =>
{
reg.MapInheritedProperties();
reg.Requires("SchoolID").HasValue((int)<value greater than 0); <== Pseudo code
}).ToTable("Users");

这种事情有可能吗?如果不是,是否可以完全忽略鉴别器?

最佳答案

不确定“是否可能”部分,但它有一点气味。我的意思是,它在你的数据中暗示了真正不应该有意义的地方;您最终会遇到长期的可维护性问题。鉴别器不仅可以帮助 ORM 确定哪个记录属于哪种类型,它还应该是(imo)您正在处理的类型的逻辑描述,因为当人类对数据库运行 SQL 查询时。它还可用于帮助进行索引分区。我意识到 TPH 无论如何都有点非规范化,但您仍然希望能够使用其中的那些设计一个索引良好的数据库。

我建议只让 EF 根据类型名称为您做鉴别器,这是默认的 iirc。

关于c# - 鉴别器大于 0 的 Entity Framework 代码优先 TPH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5158241/

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