有没有办法在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 = ""; }
如果要实现其他构造函数,请务必小心调用默认构造函数,以便正确初始化类,例如,在默认构造函数中构造了实体集(关系)。