有没有办法在LINQtoSQL生成的类中重写空构造函数?

时间:2020-03-05 18:58:41  来源:igfitidea点击:

如果我的数据库中有一个名为" Users"的表,则将由LINQtoSQL生成一个名为" User"的类,该类具有已声明的空构造函数。

如果我想重写此构造函数并向其中添加自己的逻辑,那么最佳实践是什么?

解决方案

回答

看起来我们无法覆盖空的构造函数。相反,我将创建一个方法,该方法执行空构造函数中所需的功能并返回新对象。

// Add new partial class to extend functionality
public partial class User {

  // Add additional constructor
  public User(int id) {
    ID = id;
  }

  // Add static method to initialize new object
  public User GetNewUser() {
    // functionality
    User user = new User();
    user.Name = "NewName";
    return user;
  }
}

然后,在代码中的其他位置,而不是使用默认的空构造函数,请执行以下操作之一:

User user1 = new User(1);
User user2 = User.GetNewUser();

回答

由O / R-Designer生成的默认构造函数调用名为OnCreate的部分函数,​​因此最佳实践是不重写默认构造函数,而是在MyDataClasses.cs中实现部分函数OnCreated来初始化项:

partial void OnCreated()
{
  Name = "";
}

如果要实现其他构造函数,请务必小心调用默认构造函数,以便正确初始化类,例如,在默认构造函数中构造了实体集(关系)。