我在asp.net web API中遇到了逻辑问题。我有添加用户的注册方法,每个用户都属于一个帐户,用户和帐户之间的关系是多对多的;一个帐户可以添加许多用户"和"用户可以存在于多个帐户中#34;所以我有3张桌子。因此,当我直到实体框架添加用户时,它只需在表格用户中添加信息,我还需要在第3个表格中添加帐户ID(结果多对多)。
UserDetail是数据库中的一个视图,包含帐户ID和用户i,如果不存在用户,则检查用户是否存在,但遗憾的是没有帐户ID。
UserDetail newUser = db.UserDetails.Where(newuser => newuser.UserMail == user.UserMail && newuser.AccId == accID).SingleOrDefault();
if (newUser == null)
{
/*string passPhrase = System.Configuration.ConfigurationSettings.AppSettings["PassPhrase"];
string random_token = Crypto.RandomToken().ToString();
string EnToken = Crypto.Encrypt(random_token, passPhrase);
user.ConfirmToken = random_token;*/
db.Users.Add(user);
try
{
db.SaveChanges();
//Mail.SendMail(EnToken,user.UserMail);
return Request.CreateResponse(HttpStatusCode.Accepted);
}
catch
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
答案 0 :(得分:1)
您需要将帐户添加到帐户的用户或用户。
以下是向用户添加帐户的示例:
var newUser = db.UserDetails.FirstOrDefault(newuser => newuser.UserMail == user.UserMail && newuser.AccId == accID);
if (newUser == null)
{
var user = new User();
var account = db.Accounts.FirstOrDefault(acc => acc === "some account");
if(account != null)
{
//Depending on your entity, you may need to check if Accounts is null here.
user.Accounts.add(account);
}
db.Users.Add(user);
try
{
db.SaveChanges();
return Request.CreateResponse(HttpStatusCode.Accepted);
}
catch
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
如果您的课程类似于以下内容,那么EF会自动为您映射表格。
public class User
{
public ICollection<Account> Accounts {get;set;}
}
public class Account
{
public ICollection<User> Users {get;set;}
}