そこで、既存のデータベースからVSでDataContext(Linq-Sql)を作成しました。Usersというテーブルがあるので、User
オブジェクトがあります。UserID
特に、とUsername
プロパティに焦点を当てたいと思います。
今、私はインターフェースを持っています:
interface IUser
{
int Id { get; }
string Username { get; }
}
部分User
クラスを作成して実装したいIUser
。これは、多くの場所ですべてのユーザーをIUserとして扱い、正確なUserクラスを気にしないようにするためです。
public partial class User : IUser
{
public int Id
{
get { return UserID; }
}
}
Username
getプロパティは、エンティティオブジェクトがすでに実装していることがわかっているため、実装していません。
私のようなクエリがあると、その呼び出しがSQLステートメントに変換され、存在しない列(UserIDが存在する)dc.Users.SingleOrDefault(p => p.Id == 5);
を見つけようとするため、エラーであることがわかります。Id
だから私はこのマッピングの問題を理解しています。
クエリを実行するdc.Users.SingleOrDefault(p => p.Username == "admin")
と、エラーもスローされますが、Username
実際にはデータベース内の既存の列であるため、カスタム/追加のマッピングを行う必要はないという印象があります。私は何が欠けていますか?
誰かがLinqと戦う方法と部分クラスがカスタムインターフェイスを実装する方法についての良い情報源を教えてもらえますか?
更新の質問: 試してみる前に、カスタムインターフェイスを使用してdatacontext.designer.csファイルを「リギング」する(個別の部分クラスファイルではなくクラス自体に実装する)ことが機能するかどうかを誰かが知っていますか?これを行うことの結果はありますか?