C# 实体框架客户端/服务器需要共享相同的密钥ID

C# 实体框架客户端/服务器需要共享相同的密钥ID,c#,.net,database,entity-framework,C#,.net,Database,Entity Framework,我是一名学生,正在开发一个项目,我使用Entity Framework 5.0 CodeFirst为我的应用程序提供嵌入式数据库。我有一个服务器和一个客户端应用程序,它们具有完全相同的本地数据库,但采用两种不同的解决方案 数据库有一个项目表,其中可以有图形,图形上可以有一些组件。因此,如果客户希望在服务器上查询特定项目上的图形,我会创建一个名为: GetDrawings(int ProjectId) { var result = suedocode: get all drawings;

我是一名学生,正在开发一个项目,我使用Entity Framework 5.0 CodeFirst为我的应用程序提供嵌入式数据库。我有一个服务器和一个客户端应用程序,它们具有完全相同的本地数据库,但采用两种不同的解决方案

数据库有一个项目表,其中可以有图形,图形上可以有一些组件。因此,如果客户希望在服务器上查询特定项目上的图形,我会创建一个名为:

GetDrawings(int ProjectId)
{
     var result = suedocode: get all drawings;
}
它应该获得特定项目的所有图纸

我最大的问题是。假设服务器有10个具有以下id的项目: projectd:1,…,projectd:10

如果我的客户机应用程序在projectd=3的服务器上查询项目,并将其保存在客户机的本地数据库上,那么projectd将获得一个新id,即projectd=1,因为它是存储在客户机数据库中的第一个项目。当我现在想要查询新存储的项目上的图形并使用关联的ProjectId时,我实际上会在ProjectId=1的服务器上获取与该项目关联的图形

所以最大的问题是,我是否可能让服务器生成Id,并且在客户端保存项目时使用这些确切的Id。因此,当服务器上的projectd=4存储在客户机的db上时,id为projectd=4,即使它是表中的第一个项目存储

希望我解释了我的问题,这样才有可能理解


提前感谢

您可以在本地存储服务器生成的ID,但关闭本地密钥的标识功能

或者

考虑使用guid/uniqueidentifier作为主键。它可以在运行时分配,并在适当时存储

如果你喜欢比较观点和策略的话,那就没有了