加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_郴州站长网 (http://www.0735zz.com/)- 云通信、区块链、物联设备、云计算、站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

entity-framework – 获取Model模式,以使用不支持CreateDatabase

发布时间:2020-12-24 17:18:56 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用Entite Framework 5的SQLite提供程序,但它不支持Create Database,因此无法自动创建数据库. (代码优先) 有没有办法在运行时获取Model模式,以便我自己创建SQL“CREATE TABLE”命令? 如果不是在运行时,以其他方式获取模式,那么我知道如何正确创建

我正在使用Entite Framework 5的SQLite提供程序,但它不支持Create Database,因此无法自动创建数据库. (代码优先)

有没有办法在运行时获取Model模式,以便我自己创建SQL“CREATE TABLE”命令?

如果不是在运行时,以其他方式获取模式,那么我知道如何正确创建表?

谢谢!

解决方法

A)至于在运行时部分获得模型模式

(都是我早先的帖子)

见这个How I can read EF DbContext metadata programmatically?

和How check by unit test that properties mark as computed in ORM model?

另外这个用于自定义初始化程序Programmatic data transformation in EF5 Code First migration

话说回来…

我看到的问题是你实际拥有数据的地点和位置.
其实我很确定你随时都无法做到这一点.
因为要能够提取该信息,所以需要运行DbContext – 因此必须构造db等.

在初始化程序中可能 – 但使用不同的方式来获取该信息 – 上述内容不可用.

B)
另一种方式是实现提供者,生成器等(例如this post).
这样你就可以在EF / CF本身的正确时间获得所有信息.
但是我没有那么多玩过.

有关详细信息,请查看EF source code

到目前为止,这更像是一个“收集的信息” – 以防它可以帮助您随处获得它.不是真正的解决方案.我明天再补充一些.

编辑:

要获得真正的数据库元数据,请查看其他DataSpace,这应该可以帮助您到达正确的位置…
(注意:从这里开始的事情往往不太准确 – 显然没有正确的官方支持)

var ssSpaceSet = objectContext.MetadataWorkspace.GetItems<EntityContainer>(DataSpace.SSpace).First()
    .BaseEntitySets
    .First(meta => meta.ElementType.Name == "YourTableName");

如果在调试器中查找,Table属性应该具有实际的表名.
但是,可能需要反思.

How I can read EF DbContext metadata programmatically?
How check by unit test that properties mark as computed in ORM model?
Programmatic data transformation in EF5 Code First migration
Entity Framework MigrationSqlGenerator for SQLite
http://entityframework.codeplex.com/
Entity Framework – Get Table name from the Entity
ef code first: get entity table name without dataannotations
Get Database Table Name from Entity Framework MetaData
http://www.codeproject.com/Articles/350135/Entity-Framework-Get-mapped-table-name-from-an-ent

(编辑:开发网_郴州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读