【问题标题】:One database field is not update in EntityFrameworkEntityFramework 中的一个数据库字段未更新
【发布时间】:2015-11-15 17:18:22
【问题描述】:

我在 SQL Server 2012 中有一个存储过程:

CREATE procedure [dbo].[GetEmailThread]
(
@id int
)
AS
SELECT e.Id, e.Created, e.MailFrom, e.MailTo, e.Body, e.Sended, ip.Ip, e2.Sended as ReplySended, e2.Body as ReplyBody, e2.Id as ReplyId
FROM Emails e 
LEFT JOIN IpAddress ip ON (ip.Id = e.IpId)
LEFT JOIN Emails e2 ON (e.Id = e2.ParentEmailId)
WHERE e.RealtyId = @id
ORDER BY e.Sended, ReplySended

Email表的定义:

CREATE TABLE [dbo].[Emails](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Created] [datetime] NOT NULL,
    [MailFrom] [nvarchar](100) NOT NULL,
    [MailTo] [nvarchar](500) NOT NULL,
    [Subject] [nvarchar](500) NULL,
    [Body] [nvarchar](max) NULL,
    [Sended] [datetime] NULL,
    [Ip] [varchar](15) NULL,
    [ReplyTo] [nvarchar](100) NULL,
    [IpId] [int] NULL,
    [RealtyId] [int] NULL,
    [ParentEmailId] [int] NULL,
    [IsBodyHtml] [bit] NOT NULL CONSTRAINT [DF_Emails_IsBodyHtml]  DEFAULT ((0)),

和 C# 中的 EntityFramework 模型。每当我在 Visual Studio 模型浏览器中右键单击此 EntityFramework 模型并选择菜单“从数据库更新模型”时,模型都会更新,但 GetEmailThread_Result 中的 MailTo 字段总是丢失。

我需要手动将其添加到模型 GetEmailThread_Result.cs 以使其正常工作。

为什么?为什么这个?我看不出这个领域有什么特别之处。为什么不是 MailFrom?

【问题讨论】:

  • 您可以检查您是否在 web.config 中指向正确的数据库。有时我们正在尝试更新 EDMX 文件但它没有正确更新,我们发现的原因是我们正在进行更改在一个数据库中,而 EDMX 正在使用另一个数据库。
  • 我检查了连接字符串,它是正确的。此外,它是正确的数据库,因为如果添加新字段,我可以在这个 EntityFramework 模型中看到它。除此字段外,所有其他更改都会更新。
  • 您是否可以为此列使用 elias 列名,但非标准名称(与可能的 keyowrd 不相似)如 e.MailTo as MailTo_new
  • 这也不起作用。我尝试将 e.MailTo 添加为 MailTo2

标签: c# sql-server entity-framework


【解决方案1】:

解决方案是手动编辑项目中的 EF 文件,因为它们已损坏,详情请参阅Updating Entity Framework Model

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    相关资源
    最近更新 更多