Linq2sql继承强制转换

时间:2009-02-19 09:54:37

标签: c# linq-to-sql

我在linq2sql中使用了继承,并且引用了从客户端继承的供应商和买方。我需要能够将买方“升级”给供应商。

我试过了:

        Client client = ClientMethods.ValidateId<Client>(clientId);
        client.ClientTypeId = ClientMethods.CLIENT_TYPE_SUPPLIER;
        db.SubmitChanges();

但得到“不允许:继承鉴别器从'1'更改为'2'会将类型从'买方'更改为'供应商'。”

我能找到的唯一解决方案是在没有linq2sql的情况下执行此操作并编写SP ??

3 个答案:

答案 0 :(得分:1)

我想知道为什么你甚至有两个不同的子类,如果你想要从一种类型转换到另一种类型的自然情况。我认为你应该重构你所拥有的东西,并使买方和供应商成为一个实体。然后,如果您的行为根据客户是买方还是供应商而有所不同,我会将其提取到您可以设置或添加到客户端的单独对象中。

答案 1 :(得分:1)

我刚遇到同样的问题,并通过将鉴别器字段加倍到一个实际用作鉴别器值的计算列和一个存储该值的整数列来解决它* ...

*) - 一个可能有令人讨厌的副作用的着名解决方案,所以要警告

答案 2 :(得分:0)

或许,尝试通过填充买方的属性值来创建新的供应商?