下一个 所以dicsussion在这里, 我已经实现分类,以便创造默认的日期时间值为我的创建和修改数据库字段中的一个构造。

现在的问题是,我的数据库有100多个表格,和75+他们有相同的基本结构,其中包括创建和修改,列定义。

所以..而不是创建75个部分类我需要保持,是否有任何方式我可以创建一个基类,其中每一个EF类型继承,其继承默认构造填充日期时间值为创建和修改的?

编辑:值得注意的是,我使用的EF4.0

有帮助吗?

解决方案

您当然可以使用EF4和EF1指定自己的基类,尽管EF4容易得多。右键单击设计表面,您应该看到一个添加代码生成项目的选项。选择ado.net实体对象生成器。这将为您的项目(.tt扩展名)提供一个T4文件,该文件指定用于从模型生成实体类的模板。要指定不同的基类

Private Function BaseTypeName(ByVal entity As EntityType, ByVal code As CodeGenerationTools) As String
    Return If(entity.BaseType Is Nothing, "EntityObject", MultiSchemaEscape(DirectCast(entity.BaseType, StructuralType), code))
End Function

用您的基类替换EntityObject。请注意,如果您使用此模板,则您的基类必须从system.data.objects.dataclasses.entityobject- system.data.objects.dataclass.- entityObject-您可以改用POCO模板,但这可能对您来说足够了。

其他提示

你当然可以告诉EF使用的基类实体(这是正确的,在设计师为财产的实体)...但是如果你想要确定的缺省值,这一领域,也许你可以挂钩到两个事件在你体SavingChanges和ObjectMaterialized.

http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.savingchanges.aspx

http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.objectmaterialized.aspx

你可以使用这些机会,注入默认值(s)要使用。所以在你的SavingChanges处理程序,例如,可以检查objectstatemanager中的上下文来看,如果国家的相关实体EntityState.加入,然后设定的创建和修改的日期。

或者,如建议,是有原因的默认值列在SQL服务器不能只是GetDate()?(假设你正在使用SQL Server)。...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top