Orm 这个数据结构可以用EF4、nHibernate、亚音速建模吗?

Orm 这个数据结构可以用EF4、nHibernate、亚音速建模吗?,orm,entity-framework-4,Orm,Entity Framework 4,我们目前没有使用任何类型的ORM。我想在现有应用程序中建立一个相对简单的数据库结构模型。它试图在仍然使用SQL Server(2008)的情况下为模式增加灵活性和运行时定制,而不是转向非关系型文档数据库(Coach、Mongo等) 我们在许多地方使用了这种模式,但为了清晰起见,我将在这里对其进行一般化: 我们有一个对象表,其结构如下: create table Object ( ObjectID int, FixedObjectProperty1 varchar(25),

我们目前没有使用任何类型的ORM。我想在现有应用程序中建立一个相对简单的数据库结构模型。它试图在仍然使用SQL Server(2008)的情况下为模式增加灵活性和运行时定制,而不是转向非关系型文档数据库(Coach、Mongo等)

我们在许多地方使用了这种模式,但为了清晰起见,我将在这里对其进行一般化:

我们有一个
对象
表,其结构如下:

create table Object (
    ObjectID int,
    FixedObjectProperty1 varchar(25),
    FixedObjectProperty2 int,
    etc.
)
create table Object_Attributes (
    Object_AttributesID int,
    ObjectID int,
    PropertyName varchar(50),
    PropertyValue varchar(50)
)
还有一个相关的
Object\u Attributes
表,其中包含每个对象的“灵活”属性。这本质上是一组具有以下结构的每个对象的名称/值对:

create table Object (
    ObjectID int,
    FixedObjectProperty1 varchar(25),
    FixedObjectProperty2 int,
    etc.
)
create table Object_Attributes (
    Object_AttributesID int,
    ObjectID int,
    PropertyName varchar(50),
    PropertyValue varchar(50)
)
我想使用一些ORM技术(EF4、亚音速、nHibernate或“roll my own”)对此进行建模,以获取上面的数据结构,并生成一个动态/匿名对象(最终将作为JSON发送到web客户端),其结构如下(例如
对象属性
表中的3条记录):

ObjectID
FixedObjectProperty1
FixedObjectProperty2
PropertyName1
PropertyName2
PropertyName3,
etc

当然,我还需要能够从JSON反序列化回DB。任何想法或建议都非常感谢。

我不可能在EF中映射这一点。您将无法将1-N关系投影到扁平结构中

此外,我不认为这是ORM的场景。ORM意味着对象实体映射,在.NET中,对象是强类型语言结构,必须在编译时定义。因此,对象属性中的每个新属性都需要重新定义映射、修改类和重新编译应用程序

您的需求可能在完全动态的语言中通过自己的ORM工具实现。NET不是这样的环境


您可以尝试使用通用方法加载object和object_属性(object将具有属性集合),并构建一些动态扁平包装器(DLR)但是对于JSON,只需创建自定义序列化就更容易了。

这样做的方法是在数据库中创建视图并为视图创建实体。

那么你是说如果你有一个属性的
PropertyName
为“Foo”,则在代码中,该对象应具有名为“Foo”的属性,例如object。Foo@RPM1984:完全正确!这就是我要找的。这就是我要去的地方。另外,你的评论是:ORM的实际意思是正确的。就其本质而言,我的数据库结构正在击败ORM中的“R”。谢谢你的确认!