【问题标题】:Azure Mobile Service Table Controller and EntityState.ModifiedAzure 移动服务表控制器和 EntityState.Modified
【发布时间】:2015-02-10 01:34:56
【问题描述】:

我正在使用 Azure 移动服务 TableController。 我在实体框架中遇到外键关系问题。我有两张表:Personsand Country。 Persons 有一个 CountryId 的外键列。

保存时,实体框架在 Country 表中创建一个新行,其名称与国家 [0] 相同,但新的递增 ID。这显然不是预期的结果 - 该人应该将其 Country_CountryId 字段设置为国家 [0] 的 id,并且不应创建新行。

我该如何解决这个问题?

我正在使用表格控制器

    // POST tables/Booking
    public async Task<IHttpActionResult> PostPerson(Personitem)
    {
        Person current = await InsertAsync(item);
        return CreatedAtRoute("Tables", new { id = current.Id }, current);
    }

我知道如何在 api 控制器中设置 EntitySate

using (var dt = new DatabaseContext()) { 
    dt.Entities.Add(person);
    dt.Entry(person.Country).State = EntityState.Modified;
    dt.SaveChanges();
}

【问题讨论】:

    标签: azure-mobile-services


    【解决方案1】:

    当您保存该对象时,您应该从数据库中获取国家并在人员对象中使用它,例如:

    • 从数据库“contryIdX”中获取国家/地区

    • 设置 person.ContryId ="contryIdX"

    • 然后保存到数据库中

    【讨论】:

    • 是的,你是对的。我应该只传递 CountryId 而不是 Country 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2016-12-17
    • 2016-08-08
    • 1970-01-01
    • 2017-07-18
    • 2014-02-17
    相关资源
    最近更新 更多