有很多关于这个问题的问题,但我解决不了我的情况。 可有一个人请看看这个:
我有一个Office
,其具有一对多的关系表Doctor
和Secretary
台。 二者最后的表,衍生自Employee
具有带有预定义的一个共享主键关系表Users
通过创建的表sqlmembershipprovider
。 似乎有之间的多对多关系, Users
表和Roles
表,我没有任何的手在里面。
我的问题是在创造一个(零一) -我之间(一个)关系Employee
表和Users
表,我与他们提出,那么误差之间的共享主键关系结束。 (有没有这个问题更好的解决方案?)
这里是错误:
将外键约束“FK_dbo.aspnet_UsersInRoles_dbo.aspnet_Users_UserId”上表“aspnet_UsersInRoles”可能会导致循环或多个级联路径。 指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他外键约束。 无法创建约束。 请参阅以前的错误。
这里有逆向工程后,我的代码和代码的成员:
public class Office
{
public Office()
{
this.Doctors = new HashSet<Doctor>();
this.Secretaries = new HashSet<Secretary>();
}
[Key]
public System.Guid OfficeId { get; set; }
public virtual ICollection<Doctor> Doctors { get; set; }
public virtual ICollection<Secretary> Secretaries { get; set; }
}
public class Employee
{
[Key, ForeignKey("User")]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public System.Guid Id { get; set; }
public string Name { get; set; }
[ForeignKey("Office")]
public System.Guid OfficeId { get; set; }
// shared primary key
public virtual aspnet_Users User { get; set; }
public virtual Office Office { get; set; }
}
public class Doctor :Employee
{
public Doctor()
{
this.Expertises = new HashSet<Expertise>();
}
//the rest..
public virtual ICollection<Expertise> Expertises { get; set; }
}
public class Secretary : Employee
{
// blah blah
}
public class aspnet_Users
{
public aspnet_Users()
{
this.aspnet_Roles = new List<aspnet_Roles>();
}
public System.Guid ApplicationId { get; set; }
public System.Guid UserId { get; set; }
//the rest..
public virtual aspnet_Applications aspnet_Applications { get; set; }
public virtual ICollection<aspnet_Roles> aspnet_Roles { get; set; }
}
public class aspnet_Roles
{
public aspnet_Roles()
{
this.aspnet_Users = new List<aspnet_Users>();
}
public System.Guid ApplicationId { get; set; }
public System.Guid RoleId { get; set; }
//the rest..
public virtual aspnet_Applications aspnet_Applications { get; set; }
public virtual ICollection<aspnet_Users> aspnet_Users { get; set; }
}
编辑:和关系走向深入,之间是有很多一对一的关系Users
表和Applications
表,也与Roles
和Applications
了。