Gurgen Hovsepyan
Gurgen Hovsepyan

Reputation: 406

ASP.NET MVC 3, SQL Server

First I'll show you what I do, and that there is. My project in ASP.NET MVC 3.

This is model for table Business.

[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; }
}

when I want to add information:

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();

I get the following error:

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

In database column identity specification business chose is Identity Yes.

Somebody can tell what to do.

Upvotes: 1

Views: 979

Answers (3)

Gurgen Hovsepyan
Gurgen Hovsepyan

Reputation: 406

override OnModelCreating in DbContext and add in it following Fluent API:

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

Upvotes: 0

marc_s
marc_s

Reputation: 754230

Can you make sure that in your EDMX model, your BusinessId is set to be handled by the database (property StoreGeneratedPattern = Identity)?? Also: why is your primary key nullable (long?) - makes no sense whatsoever. Your primary key must never be null !

enter image description here

Upvotes: 1

jgauffin
jgauffin

Reputation: 101130

BusinessId can not be empty/null since you have not specified that it should be autogenerated by Sql Server (which Identity means).

Since you are using Code First to generate your database, just change to:

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

Upvotes: 0

Related Questions