ASP.NET MVC 3, SQL Server - PullRequest
       18

ASP.NET MVC 3, SQL Server

1 голос
/ 31 октября 2011

Сначала я покажу вам, что я делаю, и что там есть.Мой проект в ASP.NET MVC 3.

Это модель для таблицы 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; }
}

, когда я хочу добавить информацию:

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

Я получаюследующая ошибка:

Невозможно вставить явное значение для столбца идентификаторов в таблице 'Business', когда для IDENTITY_INSERT установлено значение OFF.

В спецификации идентификаторов столбцов базы данных выбрано значение Identity Yes.

Кто-нибудь может подсказать, что делать.

Ответы [ 3 ]

1 голос
/ 31 октября 2011

Можете ли вы убедиться, что в вашей модели EDMX ваш BusinessId настроен на обработку базой данных (свойство StoreGeneratedPattern = Identity) ?? Также: почему является вашим первичным ключом, допускающим нулевое значение (long?) - не имеет никакого смысла. Ваш первичный ключ никогда не должен быть нулевым!

enter image description here

0 голосов
/ 23 декабря 2011

переопределяет OnModelCreating в DbContext и добавляет в него следующий Fluent API:

modelBuilder.Entity<Business>().HasRequired(m => m.Address).WithRequiredPrincipal(m => m.Business).WillCascadeOnDelete(true);
0 голосов
/ 31 октября 2011

BusinessId не может быть пустым / пустым, поскольку вы не указали, что он должен автоматически генерироваться сервером Sql (что означает Identity).

Поскольку вы используете Code First для создания базы данных, просто измените на:

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