Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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# 如何使用实体框架更改外键关联?_C#_Asp.net_Entity Framework - Fatal编程技术网

C# 如何使用实体框架更改外键关联?

C# 如何使用实体框架更改外键关联?,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,使用ASP.NET实体框架,如何更改两个实体之间的外键关联 下面是一个示例场景: --------------- ---------------- | Customer | | Class | --------------- ---------------- | ID | | Desctription | | Name | | Name | | ClassID (FK)|-----| ID

使用ASP.NET实体框架,如何更改两个实体之间的外键关联

下面是一个示例场景:

---------------     ----------------
|  Customer   |     |     Class    |
---------------     ----------------
| ID          |     | Desctription |
| Name        |     | Name         |
| ClassID (FK)|-----| ID           |
---------------     ----------------
客户从D类客户开始。客户花费越多,分类将更改为C、B或A。如何使用EF实现这一点

我已经在EF和我的解决方案之间建立了一个门面(因为有些操作需要EF之外的操作),我尝试这样做:

customer.Context.Class.ID=facade.SelectClass(ClassID)

它返回一个类的业务对象,但customer.Context.Class.ID需要一个数据层对象,虽然我可以这样做,但这意味着我脱离了设置层设计

这有什么办法吗


如果问题有点混乱或模糊,很抱歉。

首先,让我们回答这个问题,不需要所有额外的层次。在straight EF中,您可以执行以下操作:

var customer = Context.Customers.Where(c.Id == id).First();
customer.Class = Context.Classes.Where(c.Id == classId).First();

现在,如何将其映射到业务对象?我无法在没有看到的情况下调试代码,但您需要在facade中公开一些将业务类型映射到数据层类型的特性。我用表达式来解决这个问题,但有很多解决方案。

这并没有完全解决我的问题,但在整个过程中起到了帮助作用。谢谢