gpt4 book ai didi

linq-to-sql - Linq to Sql 继承映射到多个表

转载 作者:行者123 更新时间:2023-12-04 02:45:38 25 4
gpt4 key购买 nike

我在 Linq to Sql 中进行继承映射时遇到问题。我正在使用MSDN作为引用和基础,听起来不错。然而,它给出的示例是单表继承映射。但是,我正在尝试进行多表继承以节省表空间。这可能吗?到目前为止我已经:

[Table(Name="writing_objs")]
[InheritanceMapping(Code="T",Type=typeof(ObjectTypeA), IsDefault=true)] // Only default because a default is required
[InheritanceMapping(Code="N",Type=typeof(ObjectTypeb))]
public abstract class WritingObject
{
/* ... */

[Column(Name="obj_tp", IsDiscriminator=true)]
[StringLength(1)]
public string ObjectType { get; set; }
}

然后我定义了不同的对象类型,如下所示:

[Table(Name="obj_type_a")]
public class ObjectTypeA: WritingObject
{
/* Object Type A fields */
}

问题似乎是我在第二种类型中定义表属性,因为我收到以下异常:

The inheritance subtype 'ObjectTypeA' is also declared as a root type.

是否可以使用 Linq to Sql 将这些字段保留在单独的表中,或者我是否必须将它们全部合并到一个表中?只要不太多(某些对象类型甚至可能能够共享某些字段),一张表中存在一些额外字段就一定是不好的吗?

最佳答案

Linq to SQL 不支持使用鉴别器的多表继承,尽管这在许多情况下是最好的设计(它是最规范化的)。

您必须使用关联来实现它。如果使用映射层将其转换为基于继承的域模型,则在更高层上的管理会更容易。

关于linq-to-sql - Linq to Sql 继承映射到多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2360838/

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