【发布时间】: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