2017-05-16 150 views
0

我使用代碼優先使用實體​​框架6.0。實體框架PK名稱

我需要連接到由Microsoft Access ODBC創建的數據庫表。

當我嘗試連接到一個表時,收到關於PK名稱的錯誤。

實體框架創建一個名爲PK_dbo_TABLENAME的PK,它會在Microsoft Access中產生問題。如果我重命名它,沒有問題。

我如何強制實體框架鍵的不同名稱?

我在數據註釋語法中搜索,但沒有結果。

謝謝。

+0

檢查[KeyAttribute](https://msdn.microsoft.com/en-us/library/jj591583(v = vs.113).aspx#Key) – Mats391

回答

0

最後,從SQL Management Studio中我手動重命名PK。

1

如果你是說,你的列名是不相同的名稱屬性,您正在使用(即TableID VS Id),您可以使用[Column()]屬性覆蓋名稱:

[Column("GeoLocationDetailId")] 
public Guid Id { get; set; } 

如果您「再參照模式不承認你的主鍵,您可以在該屬性添加[Key]屬性,它會撿起來:

[Key, DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public Guid Id { get; set; } 

如果你使用的型號的配置,你可以使用HasKey方法,你將與[Key]屬性相同的方式:

 modelBuilder.Entity<GeoLocationEntity>() 
      .HasKey(e => e.Id) 
+0

問題是Sql Server下的鍵名。如果我打開一個表,鍵列是正確的,但是如果我打開Keys文件夾,costraints名稱是PK_dbo_tableName。 –

+0

你說的MS Access - 你是什麼意思的Sql Server? –

+0

實體框架代碼首先在SQL Server中創建表。我嘗試使用Microsoft Access ODBC連接 –