Ошибка 40 файла edmx MVC: десятичный тип (18,0) не соответствует пространству имен или псевдониму.

Я совершенно новичок в концепции MVC. Я использую Microsoft Visual Studio Express 2013 для Интернета и SQL Server LocalDb v11. До сих пор у меня не было никаких проблем. Но затем я изменил поле цены в своей базе данных с реального на десятичное (18,0). Я получил ошибку относительно файла edmx:

Error 40: The Type decimal(18,0) is not qualified with a namespace or alias. Only primitive types can be used without qualification.

Я пробовал с типом «десятичный» в моем файле edmx, а также с int (просто чтобы посмотреть, работает ли он), но все равно та же ошибка.

Я ценю каждый ответ.

Часть базы данных:

CREATE TABLE [dbo].[Item] (
    [Id]        INT            NOT NULL,
    [DepartmentId] INT            NOT NULL,
    [Name]       NVARCHAR (50)  NOT NULL,
    [Description]      NVARCHAR (MAX) NOT NULL,
    [Price]      DECIMAL           NOT NULL,
    [Quantity]  INT            NOT NULL,
    [AuthorId]   INT            NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [FK_Item_ToDepartment] FOREIGN KEY ([DepartmentId]) REFERENCES [dbo].[Department] ([Id]),
    CONSTRAINT [FK_Item_ToAuthor] FOREIGN KEY ([AuthorId]) REFERENCES [dbo].[Author] ([Id])
);

Класс модели:

       namespace WebStore.Models

{
    using System;
    using System.Collections.Generic;

    public partial class Item
    {
        public Item()
        {
            this.Cart = new HashSet<Cart>();
        }

        public int Id { get; set; }
        public int DepartmentId { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public decimal Price { get; set; }
        public int Quantity { get; set; }
        public Nullable<int> AuthorId { get; set; }

        public virtual Author Author { get; set; }
        public virtual Department Department { get; set; }
        public virtual ICollection<Cart> Cart { get; set; }
    }
}    

И часть в файле edmx, где я получаю ошибку 40:

<EntityType Name="Item">
      <Key>
        <PropertyRef Name="Id" />
      </Key>
      <Property Name="Id" Type="Int32" Nullable="false" />
      <Property Name="DepartmentId" Type="Int32" Nullable="false" />
      <Property Name="Name" Type="String" MaxLength="50" FixedLength="false" Unicode="true" Nullable="false" />
      <Property Name="Description" Type="String" MaxLength="Max" FixedLength="false" Unicode="true" Nullable="false" />
      <Property Name="Price" Type="decimal(18,0)" Nullable="false" />
      <Property Name="Quantity" Type="Int32" Nullable="false" />
      <Property Name="AuthorId" Type="Int32" />
      <NavigationProperty Name="Author" Relationship="Self.FK_Item_ToAuthor" FromRole="Izdelek" ToRole="Author" />
      <NavigationProperty Name="Department" Relationship="Self.FK_Item_ToDepartment" FromRole="Izdelek" ToRole="Departmetn" />
      <NavigationProperty Name="Cart" Relationship="Self.FK_Cart_ToItem" FromRole="Izdelek" ToRole="Cart" />
    </EntityType>    

person MatthewSlo    schedule 04.01.2015    source источник
comment
Вы меняли edmx вручную?   -  person Mike    schedule 04.01.2015
comment
Попробуйте ‹Имя свойства=Тип цены=Десятичная точность=18 Масштаб=0 Nullable=false/›   -  person Mike    schedule 04.01.2015
comment
Да, ранее я удалял внешний ключ из какой-то другой таблицы, но на этот раз все работало нормально.   -  person MatthewSlo    schedule 04.01.2015
comment
Хорошее предложение, но оно все еще не работает. Возможно, мне нужно будет отменить изменения и начать заново...   -  person MatthewSlo    schedule 04.01.2015
comment
Если у вас есть доступ к обозревателю моделей Edmx, попробуйте снова обновить модель из базы данных.   -  person Mike    schedule 04.01.2015
comment
У меня больше нет доступа. Я также пытался использовать «Запустить пользовательский инструмент», но теперь эффект. Можно ли удалить edmx, а затем создать новый (из базы данных) без каких-либо серьезных проблем?   -  person MatthewSlo    schedule 04.01.2015
comment
думаю ничего не сломается   -  person Mike    schedule 04.01.2015


Ответы (1)


Если вы используете десятичное число, попробуйте указать тип с заглавной буквы D, например Type="Decimal" Precision="18" Scale="0", в разделе edmx:ConceptualModels файла edmx. Раздел edmx:StorageModels должен быть в порядке с Type="decimal" Precision="18" Scale="0".

person slacker    schedule 26.05.2015