私は読み取り専用のビュー(dbo.HRINFO)を持っています。私はそれを表現するために以下のオブジェクトを構築しました。私はまた、このビューへのFKを含む "User"テーブルを持っていますが、公式の制約は定義できません。私は "User"オブジェクトを持っているときはいつでも "UserInfo/view"データにアクセスできるようにナビゲーションプロパティを設定しようとしています。コードファーストエンティティフレームワーク、新しいテーブルを変更できないビューに関連付ける
[Table("dbo.HRINFO")]
public class UserInfo
{
[Key] // But it's not really a key, there is no key, but it is null or unique
public string EMAIL_KEY { get; set; }
... more properties
}
そして、私が作成していますテーブルには、私は上記のビューに関連することを:
public class User
{
[Key]
public int Id { get; set; }
public string Email_Key { get; set; } // can be a FK to above view
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual UserInfo UserInfo { get; set; }
... more properties
}
私は無駄に流暢なAPIを使用してみました(以下、同様に多くのバリエーション) :
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<UserInfo>().HasKey(t => t.EMAIL_KEY).ToTable("dbo.HRINFO");
modelBuilder.Entity<User>().HasKey(t => t.Id).HasRequired(t => t.UserInfo);
}
ビューに制約を追加することができないため、私がやりたいことではないということができます。代わりに、Userオブジェクトの{@ {EMAIL_KEY = this.Email_Key}}}というビューからパブリック仮想UserInfo {get {[sql select *]を置くことはできますか?または何か類似している?どうやって?
質問は分かりません。 –
*ビューに制約を加えることはできません。*その意味を説明してください。ランタイムエラー?間違った結果? ... –
申し訳ありませんが、明確ではない - 私は変更する権限を持っているという見解ではありません。私は別の部門が所有するデータであるため、読み取り専用アクセス権を持っています。 – Josh