实体框架与唯一实体的一对多关系

时间:2016-03-15 15:22:22

标签: entity-framework relational-database primary-key entity-relationship unique-key

我有产品和客户实体。一个客户可以与多个产品相关,一个产品只能与一个客户相关。没有产品,客户就不能存在,因此只有在添加新产品时才会创建客户。这听起来像一个简单的场景,但问题是我只想在我的表中使用独特的客户。我的意思是,如果将新产品添加到数据库并为其分配了数据库中已存在的客户(由主键确定),则会为新产品分配与现有客户的关系,而不是添加的重复客户到数据库。有没有一种干净的方法可以通过使用Entity Framework关系自然地实现这一点,还是应该插入我自己的一些外部逻辑来控制客户创建和产品分配?请以两种方式向我展示一些示例或简要介绍该方案。

1 个答案:

答案 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; }
}
相关问题