2011-10-31 8 views
1

まず、私が何をしているのか、そこにあるのかをお見せします。 ASP.NET MVC 3の私のプロジェクト。ASP.NET MVC 3、SQL Server

これは、テーブルビジネスのモデルです。

[Table("Business")] 
public class Business 
{ 
    [Key] 
    public long? BusinessId { get; set; } 

    public Int32 LegalTypeId { get; set; } 
    public Int16 BusinessTypeId { get; set; } 
    public Int64 OwnerId { get; set; } 
    public Int32 MainIndustryFieldId { get; set; } 
    public String NameNative { get; set; } 
    public String NameEnglish { get; set; } 
    public Byte[] Logo { get; set; } 
    public DateTime CreateDate { get; set; } 

    public virtual User Owner { get; set; }//It is Forign key with user table 
} 

[Table("User")] 
public class User 
{ 
    [Key] 
    public Int64 UserId { get; set; } 

    public String UserName { get; set; } 
    public String LoweredUserName { get; set; } 
    public String FirstName { get; set; } 
    public String LastName { get; set; } 
    public String Email { get; set; } 
    public String LoweredEmail { get; set; } 
    public String Password { get; set; } 
    public String PasswordSalt { get; set; } 
    public String PasswordQuestion { get; set; } 
    public String PasswordAnswer { get; set; } 
    public Boolean IsApproved { get; set; } 
    public Boolean IsLocked { get; set; } 
    public DateTime LastActivityDate { get; set; } 
    public DateTime LastLoginDate { get; set; } 
    public DateTime CreateDate { get; set; } 

    public virtual Business Bussines { get; set; } 
} 

私は情報を追加したい:

user.Business = new Business 
{ 
    OwnerId = user.UserId, 
    LegalTypeId = business.LegalTypeId, 
    BusinessTypeId = business.BusinessTypeId, 
    MainIndustryFieldId = business.MainIndustryFieldId, 
    NameNative = business.NameNative, 
    NameEnglish = business.NameEnglish, 
    Logo = business.Logo, 
    CreateDate = DateTime.Now 
}; 
ctx.SaveChanges(); 

私は次のエラーを取得する:データベース列のアイデンティティ仕様事業で

Cannot insert explicit value for identity column in table 'Business' when IDENTITY_INSERT is set to OFF.

を選んだがIdentity Yesです。

誰かが何をすべきかを伝えることができます。

答えて

0

BusinessIdは、Sql Server(これはIdentityを意味します)によって自動生成されるべきであることを指定していないため、空/ NULLにすることはできません。あなたのデータベースを生成するために、コードファーストを使用しているので

、ちょうどに変更します

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
public long? BusinessId { get; set; } 
+0

あなたが言ったように私がやりました。今すぐ次のエラーが発生します。 –

+0

ReferentialConstraintの依存プロパティは、ストア生成の列にマップされます。列: 'BusinessId' –

+0

http://stackoverflow.com/questions/4035834/cant-insert-data-to-with-ef-with-master-detail-relationship – jgauffin

1

はあなたのEDMXモデルでは、あなたのBusinessIdがデータベースによって処理されるように設定されていることを確認することができます(プロパティStoreGeneratedPattern = Identity) ??また、なぜがあなたの主キーであるか(long?) - 意味が全くありません。主キーは決してである必要があります。

enter image description here

0

DbContextでオーバーライドOnModelCreatingと流暢API以下のそれに追加します。

modelBuilder.Entity<Business>().HasRequired(m => m.Address).WithRequiredPrincipal(m => m.Business).WillCascadeOnDelete(true);