Почему это поле недействительно? - PullRequest
0 голосов
/ 05 марта 2019

когда я хочу отправить данные для просмотра, я получаю недопустимую ошибку столбца CreamType_Id: введите описание изображения здесь

System.Data.Entity.Core.EntityCommandExecutionException: 'An error occurred while executing the command definition. See the inner exception for details.'

SqlException: Invalid column name 'CreamType_Id'.

Я сделал это на примере.но это не работает, и я не знаю, как это исправить

мои модели

public class CreamTypeModel
{
    [Key]
    public int Id { get; set; }
    public string Type { get; set; }
}

public class CreamModel
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
    public string ImageName { get; set; }

    public int? Type_id { get; set; }
    public CreamTypeModel CreamType { get; set; }
}

Они не имеют ничего общего с public CreamTypeModel CreamType { get; set; } в примере.

мой код в базе данных

CREATE TABLE [dbo].[CreamTypeModels] (
[Id]   INT            IDENTITY (1, 1) NOT NULL,
[Type] NVARCHAR (100) NOT NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);

CreamTypeModels

CREATE TABLE [dbo].[CreamModels] (
[Id]          INT             IDENTITY (1, 1) NOT NULL,
[Name]        NVARCHAR (70)   NOT NULL,
[Description] NVARCHAR (250)  NOT NULL,
[Price]       DECIMAL (18, 2) NOT NULL,
[ImageName]   NVARCHAR (100)  NOT NULL,
[Type_id]     INT             NULL,
PRIMARY KEY CLUSTERED ([Id] ASC),
FOREIGN KEY ([Type_id]) REFERENCES [dbo].[CreamTypeModels] ([Id]) ON DELETE SET NULL
);

CreamsModels

код хранилища

public class CreamRepository : ICreamRepository
{
    private CreamEFDbContext context = new CreamEFDbContext();

    public IEnumerable<CreamModel> CreamList
    {
        get { return context.CreamModels.Include(x => x.CreamType); }
    }

    public IEnumerable<CreamTypeModel> CreamTypeList
    {
        get { return context.CreamTypeModels; }
    }
}

и метод контроллера

[HttpGet]
    [Authorize(Roles = "Administrator")]
    public PartialViewResult TableCreams()
    {
        return PartialView(creamManager.CreamList.ToList());
    }

Я нахожу, как исправить то, что я переименую поле public int? Type_id { get; set; } в public int? CreamTypeModel_id { get; set; } и в базе данных тоже.Но действительно интересно, почему это не работает?без этого исправить ??У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 05 марта 2019

Как дела с настройкой вашей сущности?Прошло много времени с тех пор, как я работал с ним, но я, кажется, помню, что вы должны явно назвать ваши внешние ключи.

Посмотрите на этот ответ

https://stackoverflow.com/a/28001707/385965

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...