分离实体框架poco和objectcontext

发布于 2024-10-30 17:34:08 字数 282 浏览 0 评论 0原文

到目前为止,我正在创建一个 classLibrary 项目并插入新的 Ado.net 实体数据模型并从现有数据库中生成。类和对象类代码是自动创建的。 这对我来说并不重要。

但我想这样做并将 ObjectContext 类(例如:SomeEntities)和表类分离到两个类库。

当我更改数据库表属性时,我将更新 edmx 模型,并且类将自动更新。

有什么办法可以做到这一点吗? 我没有使用 codefirst 因为里面有数据库和数据, 我同样没有使用 modelfirst, 我首先使用数据库但无法分离

so far i was creating a classLibrary project and inserting new Ado.net Entity data model and genareting from exixting database. Class and object class codes are creating automatically.
this is not important for me.

but i want to do this and separate the ObjectContext class (ex: SomeEntities) and table classess to two calss library.

when i change the database tables property, i will update edmx model and classes will update automatically.

is there any way to do this?
i am not using codefirst because have a database and datas in it,
i am not using modelfirst likewise,
i am using databasefirst but can not separate

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葵雨 2024-11-06 17:34:08

由于您的标题中有“poco”,我猜您正在使用 EF4 POCO Generator T4 模板。

那么是的,您可以将 POCO 类和 ObjectContext 分离到两个不同的类库中。 T4 模板是为该场景准备的,因为它由两个不同的文件组成:

  • POCOGenerator.Context.tt ->负责创建派生的 ObjectContext
  • POCOGenerator.tt ->负责创建 POCO 实体

如果您在包含 EDMX 文件的类库中添加 POCO 生成器,则默认情况下两个 tt 文件都会添加到那里。

但是您可以将第二个文件 (POCOGenerator.tt) 移动到另一个类库中。 (上下文所在的 EDMX 项目需要引用此库来识别 POCO 类。)然后在文本编辑器中打开此文件。该文件中的前几行如下所示:

...
string inputFile = @"MyModel.edmx";
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
...

您现在需要更改 edmx 文件的路径(仅在 POCOGenerator.tt 中,保持 POCOGenerator.Context.tt 不变)。假设您在 Visual Studio 的同一解决方案中拥有 edmx 项目和 POCO 项目,则新路径可能是:

...
string inputFile = @"..\..\MyEDMXProject\MyModel.edmx";
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
...

现在您可以从两个不同的项目中分别执行这两个文件。一个将创建上下文文件,另一个将创建 POCO 文件。

Since you have "poco" in your title I guess that you are using the EF4 POCO Generator T4 Template.

Then yes, you can separate POCO classes and ObjectContext into two different class libraries. The T4 Template is prepared for that scenario since it consists of two different files:

  • POCOGenerator.Context.tt -> responsible to create your derived ObjectContext
  • POCOGenerator.tt -> responsible to create your POCO entities

If you add the POCO generator in the class library where you have your EDMX file, by default both tt-files will be added there.

But you can move then the second file (POCOGenerator.tt) into another class library. (The EDMX project where the context is located needs to reference this library to recognize the POCO classes.) After that open this file in a text editor. Some of the first lines in this file will look like:

...
string inputFile = @"MyModel.edmx";
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
...

You now need to change the path to the edmx file (only in POCOGenerator.tt, leave POCOGenerator.Context.tt unchanged). Assuming you have edmx project and POCO project in the same solution of Visual Studio, the new path might be:

...
string inputFile = @"..\..\MyEDMXProject\MyModel.edmx";
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
...

Now you can execute both files separately from two different projects. One will create the context file and the other will create your POCO files.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文