C# 许多插入问题 目标
创建新市场并成功添加其经理 问题 实体验证失败-错误如下: MyApp.Models.Data.Users验证失败C# 许多插入问题 目标,c#,entity-framework,many-to-many,C#,Entity Framework,Many To Many,创建新市场并成功添加其经理 问题 实体验证失败-错误如下: MyApp.Models.Data.Users验证失败 电子邮件:电子邮件字段是必需的 PHash:需要PHash字段 PSalt:PSalt字段是必需的 情景 我正在我的应用程序上创建一个市场,我可以将其设置为经理。换句话说,我将一个已经存在的用户附加到一个市场。我正试图通过以下代码实现这一点: [HttpPost] public ActionResult Add(Market market) { [...] M
- 电子邮件:电子邮件字段是必需的
- 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"
[...]
}
如您所见,我没有设置用户的电子邮件
、PHash
或PSalt
——我没有注册新用户,而是将现有(用户)关联到(新)市场
所以我问:我如何解决这个问题?
技术细节
我使用的是Entity Framework 5+C#+MySQL。用户不会被添加,因为您在将市场添加到数据库后将用户添加到市场。因此,用户在数据库中不存在于市场中
marketBasics.User.Add(user); //First add user to market
db.Markets.Add(marketBasics); //Then add market to database
我希望这有帮助 通过对的回答和一些研究,我发现我需要将用户Id附加到用户
实体
遵循最终代码:
[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);
[...]
}
要了解有关附加方法的更多信息
祝大家成功