データベースに 'Users' というテーブルがある場合、LINQtoSQL によって生成された 'User' というクラスがあり、既に宣言されている空のコンストラクターがあります。
このコンストラクターをオーバーライドして独自のロジックを追加する場合のベスト プラクティスは何ですか?
データベースに 'Users' というテーブルがある場合、LINQtoSQL によって生成された 'User' というクラスがあり、既に宣言されている空のコンストラクターがあります。
このコンストラクターをオーバーライドして独自のロジックを追加する場合のベスト プラクティスは何ですか?
O/R-Designer によって生成されるデフォルトのコンストラクターは、 - と呼ばれる部分関数を呼び出します。OnCreated
したがって、ベスト プラクティスは、デフォルトのコンストラクターをオーバーライドするのではなく、アイテムを初期化するために部分関数OnCreated
を実装することです。MyDataClasses.cs
partial void OnCreated()
{
Name = "";
}
他のコンストラクターを実装している場合は、クラスが適切に初期化されるように、常にデフォルトのコンストラクターを呼び出すように注意してください。たとえば、エンティティセット (関係) はデフォルトのコンストラクターで構築されます。
空のコンストラクターをオーバーライドできるようには見えません。代わりに、空のコンストラクターで必要な機能を実行し、新しいオブジェクトを返すメソッドを作成します。
// 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();