我們已經構建了一個REST API服務,我們目前在Android和iOS應用程序中使用它。要存儲我們使用實體框架的數據。在此API中,您可以創建一個帳戶,並且您也可以將其他用戶添加爲您的朋友。我們在添加其他用戶成爲朋友時遇到問題。實體框架:自己的modeltype列表刪除其他條目
這是場景: 用戶A將用戶B添加爲朋友,這是有效的。 用戶C將用戶B添加爲朋友,這是有效的,儘管現在用戶A已經從他的朋友列表中丟失了用戶B.
問題: 這裏的問題是,用戶A失去了用戶B作爲朋友,這是我們正在努力解決的問題。我們完全不知道用戶A爲什麼或者甚至是如何失去用戶B作爲他朋友列表中的朋友。我們都是Entity Framework的新手,並且說我們對它的經驗很少。
當我們今天是: 我們有一個User
一個模型,這個模型中,我們有一個List<User> friends
其中包含的其他用戶。這個想法是將用戶添加到這個列表中。澄清:列表的用戶類型爲與相同,爲包含此列表的整個類用戶。換句話說,我們將其他用戶添加到我們自己的用戶列表中。在下面的第二個代碼示例中,我們通過它的用戶名檢索用戶:
User friend = db.Users.Single(i => i.userName == newFriend.userName);
。
當前用戶
User user = db.Users.Include("Friends").Single(i => i.userName == currentUser);
是增加用戶friend
到自己的好友列表。
這是一個用戶模型:
public class User
{
[Key]
public int id { get; set; }
[Index(IsUnique = true)]
[StringLength(50)]
[Required]
public string userName { get; set; }
public string firstName { get; set; }
public string lastName { get; set; }
public string email { get; set; }
public List<Vacation> vacations { get; set; }
public List<User> friends { get; set; }
}
這是一個用戶添加爲好友的代碼:
using (var db = new ProjectDbContext())
{
User friend = db.Users.Single(i => i.userName == newFriend.userName);
User user = db.Users.Include("Friends").Single(i => i.userName == currentUser);
if (friend != user)
{
if (!user.friends.Contains(friend))
{
user.friends.Add(friend);
db.SaveChanges();
return Ok("Friend added.");
}
else
return BadRequest("Friend already exists.");
}
else
return BadRequest("You cannot add yourself as a friend.");
}
我希望我有足夠的詳細解釋這一點,有人能夠幫助我們解決這個問題。任何幫助表示讚賞。
你能分享DB結構嗎? – 2015-11-02 12:12:28
你是這個意思嗎? 'CREATE TABLE [DBO]。[用戶]( [用戶名] NVARCHAR(50)NOT NULL, [名字] NVARCHAR(MAX)NULL, [姓氏] NVARCHAR(MAX)NULL, [電子郵件] NVARCHAR( MAX)NULL, [ID] INT IDENTITY(1,1)NOT NULL, [USER_ID] INT NULL, 約束[PK_dbo.Users] PRIMARY KEY CLUSTERED([ID] ASC), 約束[FK_dbo.Users_dbo.Users_User_id ] FOREIGN KEY([User_id])REFERENCES [dbo]。[Users]([id]) );' – CptSeasick
EF中的子集合很棘手。看到這篇文章。 http://stackoverflow.com/questions/27176014/how-to-add-update-child-entities-when-updating-a-parent-entity-in-ef –