实体框架类的实例

问题描述:

我面临着一个问题,即我的实体框架不断古怪行为时,我尝试实例任何类。我正尝试使用默认的用户管理器行为将数据存储在我的数据库中。实体框架类的实例

一旦我开始实例化一个新的通知,它补充说,通知的通知在它坚持这些变化和处理来自实体框架的错误,指出存在的多重问题应用程序的用户类可用列表之前,我怎么能告诉实体框架的更改不会持久,一旦我在这里实例化一个类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。 (假);' –

解决方案的时候,后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觉得诚实愚蠢。