Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq2sql继承转换_C#_Linq To Sql - Fatal编程技术网

C# Linq2sql继承转换

C# Linq2sql继承转换,c#,linq-to-sql,C#,Linq To Sql,我在linq2sql中使用继承,并拥有从客户继承的实体供应商和买方。我需要能够“升级”一个买家到供应商 我试过: Client client = ClientMethods.ValidateId<Client>(clientId); client.ClientTypeId = ClientMethods.CLIENT_TYPE_SUPPLIER; db.SubmitChanges(); Client-Client=ClientMeth

我在linq2sql中使用继承,并拥有从客户继承的实体供应商和买方。我需要能够“升级”一个买家到供应商

我试过:

        Client client = ClientMethods.ValidateId<Client>(clientId);
        client.ClientTypeId = ClientMethods.CLIENT_TYPE_SUPPLIER;
        db.SubmitChanges();
Client-Client=ClientMethods.ValidateId(clientId);
client.ClientTypeId=ClientMethods.client\u TYPE\u供应商;
db.SubmitChanges();
但是get“不允许:继承鉴别器从'1'更改为'2'会将类型从'Buyer'更改为'Supplier'


我能找到的唯一解决方案是在没有linq2sql的情况下实现这一点,并编写一个SP???

也许,尝试通过填充买方财产的价值来创建一个新的供应商?

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

我也遇到了同样的问题,通过将鉴别器字段加倍为一个实际用作鉴别器值的计算列和一个存储值的整数列,解决了*)问题


*)-其中一个著名的解决方案可能会产生严重的副作用,请注意

如果这是唯一的解决方案,那么我想我会选择SP。不过,您可以在linq2sql中使用SP,不是吗?我想我至少听说过这件事。。。