gpt4 book ai didi

.net - 在 Linq-to-SQL 中模拟多表继承

转载 作者:行者123 更新时间:2023-12-03 17:59:09 25 4
gpt4 key购买 nike

到现在为止,每个人都知道 Linq-to-SQL 本身并不支持多表继承(又名 table-per-subtype),如果你想要原生的,你可以使用其他 ORM 框架,如 Entity Framework 、NHibernate 等。支持多表继承(如果您有任何疑问,请引用 SO 问题“Multiple Inheritance in LINQtoSQL”)。

但是,假设您确实想使用(或仅限于使用)Linq-to-SQL 作为您的 ORM 层,是否有人确定了一种简单而直接的设计策略来模拟 Linq-to-SQL 项目中的多表继承,以便是否可以使用自然的、面向对象的 API 针对 Linq-to-SQL 层编写客户端代码?

最佳答案

我想山姆 有一个很好的答案:Linq2Sql 似乎无法做到这一点。
但只要你只想模拟这种行为,我就会做这样的事情:

      /// <summary>
/// Declare POCO (Plain Old CLR Object) as you would to manipulate your inheritance
/// </summary>
public class Person
{
public abstract void Load();
public abstract void Save();
}

/// <summary>
/// Simulate a consistent behavior
/// </summary>
public class Customer : Person
{

public override void Load()
{
// - Do some Linq2Sql stuff
}

public override void Save()
{
// - Do some Linq2Sql stuff
}

}

对于像“JOIN”这样的查询,我会考虑生成我自己的 expression trees ,如果我真的需要这个,因为这很快就会变得棘手。
您在 this example 中看到的“左外连接”方法来自 哈吉拉辛也可以将“ protected ”放在 Person 类中,并使用来自“客户”和其他 child 的正确值进行调用。

总之,我认为所有的工作都必须手动完成才能模拟 Objects 中的请求。表达式树可以做任何事情,但很难最终确定。

此致,

关于.net - 在 Linq-to-SQL 中模拟多表继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5575509/

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