2017-06-22 55 views
0

我面臨着一個問題,即我的實體框架不斷古怪行爲時,我嘗試實例任何類。我正嘗試使用默認的用戶管理器行爲將數據存儲在我的數據庫中。實體框架類的實例

一旦我開始實例化一個新的通知,它補充說,通知的通知在它堅持這些變化和處理來自實體框架的錯誤,指出存在的多重問題應用程序的用戶類可用列表之前,我怎麼能告訴實體框架的更改不會持久,一旦我在這裏實例化一個類CF是我的控制器代碼:

public string AddFriend(string AddedUserId) 
{ 
    var AddedUser = UserManager.FindById(AddedUserId); 
    var AddingUser = UserManager.FindById(User.Identity.GetUserId()); 
    var friendship = new Friend(AddingUser, AddedUser) { IsInvitation = true 
    }; 
    AddingUser.Friends.Add(friendship); 
    AddedUser.Notifications.Add(new Notification(AddingUser, 
     "Friend Invitation", 
     "The user " + AddingUser.FirstName + " " + AddingUser.LastName + 
     "Sent you a friend invitation", friendship)); 
    UserManager.Update(AddedUser); 
    UserManager.Update(AddingUser); 
    return "Friend was added successfully"; 
} 

我Notification類:

[Table("Notifications")] 
public class Notification 
{ 
    [Key] 
    public int NotificationId { get; set; } 
    public string Title { get; set; } 
    public string Content { get; set; } 
    [Required] 
    public ApplicationUser AssociatedUser { get; set; } 
    public Friend AssociatedFrienship { get; set; } 
    public GroupMember AssociatedGroup { get; set; } 
    public ChannelMember AssociatedChannel { get; set; } 
    public Message AssociatedMessage { get; set; } 
    public bool Consulted { get; set; } 

    public Notification() 
    { 
    } 

    public Notification(ApplicationUser associatedUser, string title, string content, Friend associatedFriend = null, GroupMember associatedGroup = null, ChannelMember associatedChannel = null, Message associatedMessage = null) 
    { 
     AssociatedUser = associatedUser; 
     Title = title; 
     Content = content; 
     AssociatedChannel = associatedChannel; 
     AssociatedGroup = associatedGroup; 
     AssociatedFrienship = associatedFriend; 
     AssociatedMessage = associatedMessage; 
     Consulted = false; 
    } 
} 

我ApplicationUser類:

public partial class ApplicationUser : IdentityUser 
{ 
    public virtual List<Notification> Notifications { get; set; } 
} 

我FluentAPI代碼:

modelBuilder.Entity<Notification>() 
      .HasRequired(c => c.AssociatedUser) 
      .WithMany(c => c.Notifications); 

我得到的誤差是就行:> UserManager.Update(addedUser);它說實體框架的約束違規行爲,關係的作用(Notification_AssociatedUser_Target)(Qwirk.Models.Notification_AssociatedUser)的多樣性爲1或0..1。 在此先感謝!

+0

你想用'Notification'&'AssociatedUser'表建立什麼樣的關係?首先根據表結構嘗試在'modelBuilder.Entity ()'中添加'HasForeignKey'。 –

+0

通知只能有一個關聯用戶希望是接收通知的人,並且應用程序用戶可以分配給他的許多通知。有關模型構建器的HasForeignKey我已經嘗試過將它添加到模型中,通過只指定在我通知其他領域,並似乎流利的API鏈接,它根本不會解決問題。 –

+1

你想申請'ApplicationUser'和'Notifications'之間的1..n關係嗎?嘗試設置'公共虛擬ApplicationUser AssociatedUser {get;組; }'通知中&'公共虛擬ICollection <通知>通知{get;組; }在ApplicationUser中。然後,應用此模型綁定:'modelBuilder.Entity <通知>()HasRequired(C => c.AssociatedUser).WithMany(C => c.Notifications).HasForeignKey(C => C [ForeignKeyFieldName]。)WillCascadeOnDelete。 (假);' –

回答

0

解決方案的時候,後2天搜索錯誤,我終於找到了: 在我控制我不得不這樣做:代替addingUser的

AddedUser.Notifications.Add(new Notification(AddedUser, 
    "Friend Invitation", 
    "The user " + AddingUser.FirstName + " " + AddingUser.LastName + 
    "Sent you a friend invitation", friendship)); 

AddedUser yaayyyyyy我在這一點上LMAO覺得誠實愚蠢。