gpt4 book ai didi

entity-framework-4.1 - 与代码优先 Entity Framework 的单向多对多关系

转载 作者:行者123 更新时间:2023-12-03 11:51:00 24 4
gpt4 key购买 nike

我是EF的新手,并尝试使用代码优先方法获得多对多单向关系。例如,如果我有以下两个类(不是我的真实模型),它们之间具有N * N关系,但在“客户”方面没有导航属性。

public class User {
public int UserId { get; set; }
public string Email { get; set; }
public ICollection TaggedCustomers { get; set; }
}
public class Customer {
public int CustomerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
映射代码看起来像...
modelBuilder.Entity()
.HasMany(r => r.TaggedCustomers)
.WithMany(c => c.ANavgiationPropertyWhichIDontWant)
.Map(m =>
{
m.MapLeftKey("UserId");
m.MapRightKey("CustomerId");
m.ToTable("BridgeTableForCustomerAndUser");
});
这种语法迫使我对“客户”实体使用“WithMany”。
下面的 url表示:“按照惯例,Code First始终将单向关系解释为一对多。”
是否可以覆盖它,还是我应该使用其他方法?

最佳答案

用这个:

public class User {
public int UserId { get; set; }
public string Email { get; set; }
// You must use generic collection
public virtual ICollection<Customer> TaggedCustomers { get; set; }
}

public class Customer {
public int CustomerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}

并映射为:
modelBuilder.Entity<User>()
.HasMany(r => r.TaggedCustomers)
.WithMany() // No navigation property here
.Map(m =>
{
m.MapLeftKey("UserId");
m.MapRightKey("CustomerId");
m.ToTable("BridgeTableForCustomerAndUser");
});

关于entity-framework-4.1 - 与代码优先 Entity Framework 的单向多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8136026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com