इस समस्या के बारे में बहुत सारे प्रश्न हैं, लेकिन मैं अपने मामले को हल नहीं कर सका। कुछ एक कृपया इस पर एक नज़र ले जा सकते हैं:इकाई फ्रेमवर्क: कैसे हल करें "विदेशी कुंजी बाधा चक्र या एकाधिक कैस्केड पथ का कारण बन सकती है"?
मैं एक Office
तालिका जो Doctor
और Secretary
तालिकाओं के साथ एक-अनेक संबंध है है। दोनों अंतिम सारणीएं Employee
तालिका से ली गई हैं जिनमें sqlmembershipprovider
द्वारा बनाई गई पूर्वनिर्धारित Users
तालिका के साथ साझा-प्राथमिक-कुंजी संबंध है। ऐसा लगता है कि Users
तालिका और Roles
तालिका के बीच कई सारे रिश्ते हैं जिनके पास मेरे पास कोई हाथ नहीं है।
मेरी समस्या एक (शून्य, एक) - (एक) मेरे Employee
तालिका और Users
तालिका के बीच संबंध बनाने में थी जो मैंने उनके बीच साझा प्राथमिक कुंजी संबंध और समाप्त हुई त्रुटि के साथ समाप्त किया था। (वहाँ है कि समस्या के लिए एक बेहतर समाधान है?)
यहाँ त्रुटि है:
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; }
}
:
Introducing FOREIGN KEY constraint 'FK_dbo.aspnet_UsersInRoles_dbo.aspnet_Users_UserId' on table 'aspnet_UsersInRoles' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors.
यहाँ मेरी कोड और रिवर्स इंजीनियरिंग के बाद सदस्यता कोड हैं संपादित करें: और रिश्ते गहरे हो जाते हैं, Users
तालिका औरके बीच कई-एक संबंध हैंतालिका, Roles
और Applications
के बीच भी।
मुझे यह अधिकार प्राप्त करते हैं, तो आप कर्मचारी और उपयोगकर्ता तालिका में पी के लिए एक ही मूल्य का उपयोग कर रहे हैं: ऐसा करने का अपडेट किया गया जिस तरह से Entityframework कोर के लिए इस प्रकार 1,0
नोट के रूप में है? –
हां, जैसा कि मुझे उम्मीद है कि पहले उपयोगकर्ता मान होना चाहिए, तो मैं इसे कर्मचारी में उपयोग करता हूं। त्रुटि केवल शुरुआत में उठाती है। – Blazi