如何更改EntityFramework6数据库第一个生成类的无参数构造函数



在EF(4,5)的早期版本中,我对User类进行了以下扩展:

public partial class User {
    public User()
    {
        DateCreated = DateTime.Now;
    }
}

但在EF6上,代码生成创建了一个具有已定义的默认无参数构造函数的类,因此我得到了以下编译时错误:

类型"Core.Models.User"已经定义了一个名为"User"的成员,该成员具有相同的参数类型

如何确保在使用EF6数据库构建时首先初始化DateCreated值?更一般地说:如何在EF6*生成的类中创建自定义的无参数构造函数?

编辑:以下是自动生成类的简化版本供参考:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace Core.Models
{
    using System;
    using System.Collections.Generic;
    public partial class User
    {
        public User()
        {
            this.Nodes = new HashSet<Node>();
            this.UserOpenIDs = new HashSet<UserOpenID>();
            this.Flags = new HashSet<Flag>();
            this.AwardedMedals = new HashSet<AwardedMedal>();
        }
        public int UserID { get; set; }
        public string Email { get; set; }
        public string DisplayName { get; set; }
        public System.DateTime DateCreated { get; set; }
        public string Location { get; set; }
        public string RealName { get; set; }
        public virtual ICollection<Node> Nodes { get; set; }
        public virtual ICollection<UserOpenID> UserOpenIDs { get; set; }
        public virtual ICollection<Flag> Flags { get; set; }
        public virtual ICollection<AwardedMedal> AwardedMedals { get; set; }
    }
}

您不能实现第二个无参数构造函数User(),因为在自动生成的类中已经有了一个。

因此,您只有两个选项来解决此问题:

  1. 从原始类User继承(请参见下文)。

  2. 修改T4模板,以便生成带有要添加的额外代码DateCreated = DateTime.Now;的无参数构造函数。这将在每次从数据库刷新数据模型时生成额外的代码。

如果您想选择选项1,请按如下所示执行:

public class myUser: User 
{
    public myUser(): base()
    {
        DateCreated = DateTime.Now;
    }
}

注意:您必须使用类型强制转换才能支持您的类myUser。

相关内容

  • 没有找到相关文章

最新更新