本文介绍了如何更改StoreGeneratedPattern并强制实体框架生成具有身份的insert语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有服务器和客户端数据库,我需要保留一些服务器数据与客户端数据同步。数据库模式与服务器上的IDENTITY(1,1)相同。



只能在服务器上创建数据。它必须使用服务器的id插入客户端。

  CREATE TABLE [MyServer]。[dbo]。[Test1] 
[Test1Id] [int] IDENTITY(1,1)NOT NULL,
[Test1Value] [datetime] NOT NULL,
CONSTRAINT [PK_Test1] PRIMARY KEY CLUSTERED([Test1Id] ASC)) ON [PRIMARY]

CREATE TABLE [MyClient]。[dbo]。[Test1](
[Test1Id] [int] NOT NULL,
[Test1Value] [datetime] NOT NULL,
CONSTRAINT [PK_Test1] PRIMARY KEY CLUSTERED([Test1Id] ASC))ON [PRIMARY]

有没有办法更改实体类的StoreGeneratedPattern而不重建程序集,所以我可以在客户端插入IDENTITY?我花了一些时间查看

  EntityModelCodeGenerator 

但没有任何成功。



当然,我在不同的应用程序域中运行服务器和客户端,所以我可以在启动时进行更改。



我正在使用默认的EntityFramework类。如果解决了我的问题,我可以更改为POCO实体。类是简单的,并且由id引用而不是NavigationProperties。



谢谢

解决方案

p>我的最终解决方案是在插入到DB之前,在两边(Client / Server)上删除StoreGeneratedPattern =Identity并在代码中生成对象Id。这样我的代码可以保持客户端/服务器不可知,只能创建默认值的ID。


I have server and client database where I need to keep some of the server data in sync with client dataabse. Database schema is same apart from having IDENTITY(1,1) on server.

Data can be created on server only. It has to be inserted on client with using server's id.

CREATE TABLE [MyServer].[dbo].[Test1](
[Test1Id] [int] IDENTITY(1,1) NOT NULL,
[Test1Value] [datetime] NOT NULL,
CONSTRAINT [PK_Test1] PRIMARY KEY CLUSTERED ( [Test1Id] ASC ) ) ON [PRIMARY]

CREATE TABLE [MyClient].[dbo].[Test1](
[Test1Id] [int] NOT NULL,
[Test1Value] [datetime] NOT NULL,
CONSTRAINT [PK_Test1] PRIMARY KEY CLUSTERED ( [Test1Id] ASC ) ) ON [PRIMARY]

Is there any way to change StoreGeneratedPattern for entity classes without rebuilding assembly so I can insert IDENTITY on client side? I spent some time looking into

EntityModelCodeGenerator

but without any success.

Of course I run server and client in different app domain so I can do this change on startup.

I am using default EntityFramework classes. I can change to POCO entities if it resolves my problem. Classes are simple and referenced by id's instead of NavigationProperties.

Thanks

解决方案

My final solution is to remove StoreGeneratedPattern="Identity" on both sides (Client/Server) and generate object Id in a code before inserting into DB. This way my code can stay client/server agnostic and only creates ID for default value.

这篇关于如何更改StoreGeneratedPattern并强制实体框架生成具有身份的insert语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 10:31