我有产品和客户实体。一个客户可以与多个产品相关,一个产品只能与一个客户相关。没有产品,客户就不能存在,因此只有在添加新产品时才会创建客户。这听起来像一个简单的场景,但问题是我只想在我的表中使用独特的客户。我的意思是,如果将新产品添加到数据库并为其分配了数据库中已存在的客户(由主键确定),则会为新产品分配与现有客户的关系,而不是添加的重复客户到数据库。有没有一种干净的方法可以通过使用Entity Framework关系自然地实现这一点,还是应该插入我自己的一些外部逻辑来控制客户创建和产品分配?请以两种方式向我展示一些示例或简要介绍该方案。
答案 0 :(得分:1)
您的实体应该设置如下:
var mykey = new Buffer('some_secret_key', 'base64').toString();
var hash2 = crypto.createHmac('SHA256', mykey).update('teststring', 'utf8').digest('base64');
然后,无论何时保存产品,您都必须检查客户是否存在于DB中并分配该客户。如果产品上的客户具有有效的PK,那么它将更新数据库,否则它将创建客户。 EF将在保存时处理此事。例如:
public class Customer
{
[Key]
public int Id { get; set; }
public List<Product> Products { get; set; }
}
public class Product
{
[Key]
public int ProductId { get; set; }
public int CustomerId { get; set; }
[ForeignKey("CustomerId")]
public Customer Customer { get; set; }
}