【问题标题】:Error inserting into database using entity framework使用实体框架插入数据库时​​出错
【发布时间】:2014-10-09 06:45:06
【问题描述】:

我要生气了。我有一个如此简单的代码,但它不起作用。

我已经测试了所有东西,但我无法理解原因。

代码是这样的:

FataDBEntities model = new FataDBEntities();

UserAccount nua = new UserAccount();

nua.username = username;
nua.pass = password;
nua.email = mailaddress;
nua.activated = false;

model.UserAccounts.Add(nua);

try
{
    model.SaveChanges();
}
catch (Exception)
{
    throw;
}

string activationCode;

try
{
    activationCode = genActivationCodeAndMail(mailaddress, username);
}
catch (Exception)
{
    throw;
}

ActivationCode ac = new ActivationCode();

ac.code = activationCode;
ac.expiration_date = DateTime.Now.AddDays(1);
nua = model.UserAccounts.Single(p => p.username == username);
ac.wichUser = nua.ID;

model.ActivationCodes.Add(ac);

try
{
    model.SaveChanges();
}
catch (Exception)
{
    throw;
}

模型是这样的:

错误在于第二次插入...第一个工作正常。

附加信息:无法更新 EntitySet 'ActivationCode',因为它有一个 DefiningQuery 并且元素中不存在支持当前操作的元素。

请帮忙...

【问题讨论】:

  • 具体错误是什么?
  • 外键关系是什么? ActivationCode.whichUser ==> UserAccount.ID?
  • 另外,我假设您在 UserAccount 表上有一个自动生成的 ID? id的数据类型是什么?
  • 身份ID都是整数
  • 查看这里:stackoverflow.com/questions/7583770/…这是否适用于您?

标签: c# entity-framework insert foreign-keys


【解决方案1】:

根据this SO article,如果实体集是从数据库视图、自定义数据库查询或数据库表没有主键映射的,则会发生此错误。

我以前也遇到过这种情况,我用同一篇文章解决了这个问题:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多