gpt4 book ai didi

c# - 如何使 linq-to-sql 与抽象模型一起工作?

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

有一个Linq-To-Sql模型:

abstract class Foo
{
public int Id { get; set; }
public Guid Identifier { get; set; }
public string Data { get; set; }
}

还有一些后代:

sealed class FooInheritor1 : Foo { }
sealed class FooInheritor2 : Foo { }
sealed class FooInheritor3 : Foo { }

我想通过 Linq-To-Sql 从数据库中检索数据并将其存储回来。

为了实现这一点,我会通过将结果转换为非抽象继承者来查询数据库,如下所示:

var foos = dataContext.Foos.Where(someCondition).Cast<FooInheritor1>().ToArray();

我也想像这样存储一些数据:

dataContext.Foos.InsertOnSubmit(new FooInheritor1());
dataContext.Foos.InsertOnSubmit(new FooInheritor2() { Data = "Hi" });

但是,提交时出现异常:

An exception of type 'System.NullReferenceException' occurred in System.Data.Linq.dll but was not handled in user code. Additional information: Object reference not set to an instance of an object.

我用谷歌搜索了一下,发现如果我将一些层次结构属性应用到具有指定 IsDiscriminator 列的模型,Linq-to-Sql 可能会满足我的需要。但它告诉我 Guid 类型的属性不能是鉴别器列。

然后我在模型上创建了一个类型为 string 的虚拟属性,用 ColumnAttribute 标记了它,但是出现了另一个错误,解释说它不能将列插入到数据库。事实证明,Linq-to-Sql 将尝试执行此操作但会失败,除非我也在我的数据库表中创建该虚拟列。

最后,我如何实现我想要的功能?我如何告诉它我只希望模型是抽象的(因为它应该是)并且我可以以正确的方式处理它?<​​/p>

最佳答案

经过多次尝试,结果无法实现我想要实现的目标。

我以某种特定的方式做了我最好的解决方法,这绝对不是广大观众的首选。

关于c# - 如何使 linq-to-sql 与抽象模型一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18181232/

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