[英]EF6 Code First Mapping where key name is different in DB
我正在嘗試基於現有數據庫創建“代碼優先” EF模型(我立即意識到這與EF代碼優先方法的概念背道而馳),但我一直遇到問題,並且錯誤消息沒有對我來說很有意義,所以我希望能提供一些見識。
我的表是這樣定義的:
CREATE TABLE [dbo].[BackupLocales]
(
[Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY,
[LocaleId] INT NOT NULL constraint fkBackupLocales_Locale references dbo.Locales(Id),
[BackupLocaleId] INT NOT NULL constraint fxBackupLocales_BackupLocale references dbo.Locales(Id),
[Weight] INT NOT NULL DEFAULT 1
)
go
create unique nonclustered index uxBackupLocales_Locale_Weight on dbo.BackupLocales(LocaleId, [Weight]);
在代碼中,我編寫了以下實體類:
public class BackupLocale
{
[Key]
[Column("Id")]
public Guid Id { get; set; }
public int Weight { get; set; }
[Column("LocaleId")]
public int PrimaryId { get; set; }
[ForeignKey("PrimaryId")]
public virtual Locale Primary { get; set; }
[Column("BackupLocaleId")]
public int BackupId { get; set; }
[ForeignKey("BackupId")]
public virtual Locale Backup { get; set; }
}
...據我所知(根據我已閱讀的示例和文檔),看起來是正確的。 據我所知,唯一的“怪異”是數據庫中Primary
語言環境的列名不同; 我想使其在代碼中比在表中更具體。
自然,這在嘗試加載實體模型時不起作用(否則我為什么要問一個問題?:))
我收到了一條很長的錯誤消息,但它的核心是這一部分:
System.Data.Entity.Core.EntityCommandExecutionException:執行命令定義時發生錯誤。 有關詳細信息,請參見內部異常。 ---> System.Data.SqlClient.SqlException:無效的列名稱“ LocaleId”。
這里的問題是,如果我沒有使用EF,則帶有消息“ Invalid column name'LocaleId'”的SqlClient.SqlException
將意味着該列實際上在SQL Server中不存在...但是絕對不是這種情況這里。 它確實存在...所以我不確定這里發生了什么。 我唯一能想到的是,我正在更改屬性名稱的事實以某種方式破壞了映射,但當然可能是我只是在做一些愚蠢的事情。
我是否誤解了屬性應該如何工作? 我配置不正確嗎? 還是我正在嘗試做EF6不支持的事情?
看來這是Visual Studio的問題。 我關閉了解決方案,退出了VS,重新啟動了VS,並加載了項目,然后它開始工作。 :(
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.