创建新市场并成功添加其经理。
实体验证失败 - 错误如下:
MyApp.Models.Data.Users验证失败
电子邮件:电子邮件字段是必填字段。
PHash:需要PHash字段。
PSalt:PSalt字段是必需的。
我正在为我的应用程序创建一个市场,我可以设置它为经理。换句话说,我正在向一个已经存在的用户附加市场。我试图通过以下代码执行此操作:
[HttpPost]
public ActionResult Add(Market market)
{
[...]
Market marketBasics = new Market
{
Name = market.Name,
Slug = market.Slug,
Manager = market.ManagerId
};
[...]
User user = new User
{
Id = market.ManagerId
};
db.Markets.Add(marketBasics); // Here I insert all the information
// into "markets" table.
marketBasics.User.Add(user); // Here I (attempts to) insert into
// "users_in_markets"
[...]
}
正如您所看到的,我没有设置用户的Email
,PHash
或PSalt
- 我没有注册新用户,但我正在关联现有用户(用户)到(新)市场。
所以我问:我该如何解决这个问题?
我正在使用Entity Framework 5 + C#+ MySQL。
答案 0 :(得分:2)
由于您在将市场添加到数据库后将用户添加到市场,因此未添加用户。因此,用户不在数据库中的市场中。
marketBasics.User.Add(user); //First add user to market
db.Markets.Add(marketBasics); //Then add market to database
我希望有所帮助!
答案 1 :(得分:0)
通过Davud的答案和一些研究,我发现我需要将用户的ID附加到User
实体。
关注最终代码:
[HttpPost]
public ActionResult Add(Market market)
{
[...]
Market marketBasics = new Market
{
Name = market.Name,
Slug = market.Slug,
Manager = market.ManagerId
};
[...]
User user = new User
{
Id = market.ManagerId
};
db.User.Attach(user);
marketBasics.User.Add(user);
db.Markets.Add(marketBasics);
[...]
}
要详细了解Attach
方法,take a look here, on MSDN。
大家的成功!