【发布时间】:2012-04-26 14:14:33
【问题描述】:
所以我有以下型号
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Appointment
{
public int Id { get; set; }
public string Name{ get; set; }
}
我希望将它们分配到另一个具有单独主键的表,像这样
public class UserAppointment
{
public int Id { get; set; }
public int UserId { get; set; }
public int AppointmentId { get; set; }
public virtual Appointment Appointment {get;set;}
public virtual User User {get;set;}
}
我想要的是 Id 是一个键(唯一、自动生成等),同时会强制 UserId 和 AppointmentId 也具有唯一的组合。
eg
this is what i want
Id UserId AppointmentId
1 1 2
2 1 3
and not this
Id UserId AppointmentId
1 1 2
2 1 2
3 1 2
目前我在上下文中做了一些模型构建器语句来配置我的键
modelbuilder.Entity<UserApointment>()
.HasRequired(e => e.User)
.HasMany(u => u.Appointment)
.HasForeignKey(e => e.UserId);
modelbuilder.Entity<UserApointment>()
.HasRequired(e => e.Appointment)
.HasMany(u => u.Users)
.HasForeignKey(e => e.AppointmentId);
但它仍然可以让我插入具有相似用户和约会 ID 的记录。
非常感谢任何有关如何处理此问题的建议! 谢谢!!
【问题讨论】:
-
当您可以使用复合 PK 时,为什么要为
UserApointment维护Id列。 -
将在另一个与 UserAppointment 具有一对多关系的表上使用它。我觉得它更容易查询?
标签: asp.net-mvc entity-framework entity-framework-4 foreign-keys composite-key