私はモデルPostgreSQLのEntity Frameworkのは誤り
public class Role
{
public int id { get; set; }
public string name { get; set; }
public string shortname { get; set; }
}
public class User
{
public int id { get; set; }
public string login { get; set; }
public int idrole { get; set; }
public DateTime regdate { get; set; }
public int idregistred { get; set; }
public virtual Role role { get; set; }
}
を持っていると私は、リポジトリと負荷データを作成するよ:私は、データをロードすると
public class Repository
{
public IQueryable<TEntity> Select<TEntity>()
where TEntity : class
{
var context = new QContext();
return context.Set<TEntity>();
}
}
var rep = new Repository();
var roles = rep.Select<User>().Include(el => el.role).ToList();
、私が持っているエラー:
column Extent1.role_id does not exist
生成されたSQL:
SELECT "Extent1"."id", "Extent1"."login", "Extent1"."idrole", "Extent1"."regdate", "Extent1"."idregistred", "Extent2"."id" AS "id1", "Extent2"."name", "Extent2"."shortname" FROM "questionnaire"."user" AS "Extent1" LEFT OUTER JOIN "questionnaire"."role" AS "Extent2" ON "Extent1"."role_id" = "Extent2"."id"
しかし、データベースで私は "role_id"の列を持っていません。 "アンケート"で "user"私は "idrole"しか持っていない。
どのようにデータを読み込むことができますか?エンティティが不正なSQLコードを作成するのはなぜですか?どのようにそれを修正する?私は、エンティティフレームワークv6.1.3を使用し
、Npgsqlののv2.2.7とNpgsql.EntityFrameworkのv2.2.7
クラス 'User'の' role'の定義に '[ForeignKey(" idrole ")]'属性を追加すると助けになりますか? –
エラーが発生しましたプロパティ 'idrole'をナビゲーションプロパティとして設定することはできません。プロパティは有効なエンティティタイプでなければならず、プロパティには非抽象ゲッタとセッタが必要です。コレクションのプロパティでは、ICollectionを実装する必要があります。ここで、Tは有効なエンティティタイプです。 –
Alexander
それは大丈夫です!ありがとう! – Alexander