实体框架类的实例
问题描述:
我面临着一个问题,即我的实体框架不断古怪行为时,我尝试实例任何类。我正尝试使用默认的用户管理器行为将数据存储在我的数据库中。实体框架类的实例
一旦我开始实例化一个新的通知,它补充说,通知的通知在它坚持这些变化和处理来自实体框架的错误,指出存在的多重问题应用程序的用户类可用列表之前,我怎么能告诉实体框架的更改不会持久,一旦我在这里实例化一个类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。 在此先感谢!
答
解决方案的时候,后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觉得诚实愚蠢。
你想用'Notification'&'AssociatedUser'表建立什么样的关系?首先根据表结构尝试在'modelBuilder.Entity()'中添加'HasForeignKey'。 –
通知只能有一个关联用户希望是接收通知的人,并且应用程序用户可以分配给他的许多通知。有关模型构建器的HasForeignKey我已经尝试过将它添加到模型中,通过只指定在我通知其他领域,并似乎流利的API链接,它根本不会解决问题。 –
你想申请'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。 (假);' –