2013-04-27 64 views
1

我是一名開發項目的學生,我使用Entity Framework 5.0 CodeFirst爲我的應用程序提供嵌入式數據庫。我有一個服務器和一個客戶端應用程序,它們有完全相同的本地數據庫,但有兩個獨立的解決方案。實體框架客戶端/服務器需要共享相同的密鑰ID

數據庫有一個Project table,它可以有Drawings,Drawings上可以有一些組件。因此,如果客戶想查詢圖紙上我做了一個調用方法的服務器上的特定項目:

GetDrawings(int ProjectId) 
{ 
    var result = suedocode: get all drawings; 
} 

應得到所有圖紙爲特定項目。

我的大問題是。假設服務器有10個項目,其ID爲: ProjectId:1,...,ProjectId:10

如果我的客戶端應用程序在ProjectId = 3的服務器上查詢項目並將其保存在客戶端的本地數據庫,ProjectId得到一個新的ID,它是ProjectId = 1,因爲它存儲在客戶端數據庫中的第一個項目。當我現在想要查詢我新存儲的項目上的圖紙並使用關聯的ProjectId時,我實際上獲取了與ProjectId = 1的服務器上的項目關聯的圖形。

所以最大的問題是,我是否可以讓服務器生成Id,並在客戶端保存項目時使用這些確切的Id。因此,當服務器上的ProjectId = 4存儲在客戶端的數據庫中時,ID爲ProjectId = 4,即使它是表中的第一個項目存儲。

希望我解釋了我的問題,所以可以理解。

在此先感謝

回答

0

可以存儲在服務器生成的ID在本地,但關閉IDENTITY功能的本地密鑰。

或...

考慮使用GUID /唯一標識符作爲主鍵。它可以在運行時分配並在適當時存儲。

如果您想比較意見和策略,有alot of discussion

相關問題