Я получаю сообщение об ошибке при выполнении базы данных обновлений: «Имена столбцов в каждой таблице должны быть уникальными. Имя столбца« OrderRecieveDate »в таблице« dbo.OrderForms »указано больше чем единожды." Я пробовал все, что мог придумать, чтобы исправить это, и пока ничего не вышло. Раньше я мог добавлять/обновлять/удалять строки из своей таблицы через созданный мной сайт, но теперь эта функция даже не работает. Я даже не могу получить базу данных для добавления моих данных семян на данный момент.Ошибка: имена столбцов в каждой таблице должны быть уникальными
Мой Контекст/Модель файл:
public class OrderFormContext : DbContext
{
public DbSet<OrderForm> OrderForms { get; set; }
}
public class OrderForm
{
[Key, Display(Name= "Order ID")]
[ScaffoldColumn(false)]
public int OrderID { get; set; }
private DateTime _date = DateTime.Today;
[Display(Name = "Date Posted")]
[ScaffoldColumn(false)]
public DateTime OrderPostDate
{
get { return _date; }
set { _date = value; }
}
[EnumDataType(typeof(PersonReqID)),Display(Name = "Person Requesting")]
public PersonReqID PersonReq { get; set; }
[StringLength(100), Display(Name = "Grant")]
public string GrantID { get; set; }
[StringLength(10000), Display(Name = "Product Description"), DataType(DataType.MultilineText)]
public string ItemDescription { get; set; }
[StringLength(100), Display(Name = "Quantity")]
public string ItemQuantity { get; set; }
[StringLength(100), Display(Name = "Price")]
public string UnitPrice { get; set; }
[StringLength(100), Display(Name = "Company")]
public string CompanyID { get; set; }
[StringLength(100), Display(Name = "Catalog #")]
public string CatalogNum { get; set; }
[ScaffoldColumn(false)]
[Range(typeof(DateTime), "1/1/1111", "1/1/3000", ErrorMessage = "Please provide a date.")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime OrderMadeDate { get; set; }
[ScaffoldColumn(false)]
[Range(typeof(DateTime), "1/1/1111", "1/1/3000", ErrorMessage = "Please provide a date.")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime OrderRecieveDate { get; set; }
[ScaffoldColumn(false)]
[EnumDataType(typeof(PersonRecID)), Display(Name = "Person Recieving")]
public PersonRecID PersonRec { get; set; }
[ScaffoldColumn(false)]
[StringLength(100), Display(Name = "Item Location")]
public string ItemLoc { get; set; }
}
Моего Configuration.cs файл:
context.OrderForms.AddOrUpdate(
new OrderForm
{
OrderID=1,
OrderPostDate=DateTime.Now,
PersonReq=PersonReqID.Jake,
GrantID="NASA",
ItemDescription="Grenades",
ItemQuantity="100",
UnitPrice="1.50",
CompanyID="Grenades UNLMTD",
CatalogNum="G1001",
PersonRec=PersonRecID.Ajit,
ItemLoc="Freezer"
}
);
context.SaveChanges();
и, наконец, мой xxxxxxx_initial.cs миграция файл:
public override void Up()
{
AddColumn("dbo.OrderForms", "OrderRecieveDate", c =>
c.DateTime(nullable: false, defaultValue: new DateTime(1000, 1, 1)));
AddColumn("dbo.OrderForms", "OrderMadeDate", d =>
d.DateTime(nullable: false, defaultValue: new DateTime(1000, 1, 1)));
}
public override void Down()
{
DropColumn("dbo.OrderForms", "OrderRecieveDate");
DropColumn("dbo.OrderForms", "OrderMadeDate");
}
Я очень новый для веб-дизайна, и поэтому я просто заканчиваю все, что, по-моему, потенциально может вызвать проблему. Вот определение таблицы для моего файла OrderForms.dbo.
CREATE TABLE [dbo].[OrderForms] (
[OrderID] INT IDENTITY (1, 1) NOT NULL,
[GrantID] NVARCHAR (100) NULL,
[ItemDescription] NVARCHAR (MAX) NULL,
[ItemQuantity] NVARCHAR (100) NULL,
[UnitPrice] NVARCHAR (100) NULL,
[CompanyID] NVARCHAR (100) NULL,
[CatalogNum] NVARCHAR (100) NULL,
[OrderDate] NVARCHAR (100) NULL,
[ItemLoc] NVARCHAR (100) NULL,
[PersonReq] INT DEFAULT ((0)) NULL,
[PersonRec] INT DEFAULT ((0)) NULL,
[OrderPostDate] DATETIME DEFAULT ('1900-01-01T00:00:00.000') NULL,
[OrderRecieveDate] DATETIME DEFAULT ('2013-01-01T00:00:00.000') NULL,
[OrderMadeDate] DATETIME DEFAULT ('2013-01-01T00:00:00.000') NULL,
CONSTRAINT [PK_dbo.OrderForms] PRIMARY KEY CLUSTERED ([OrderID] ASC)
);
Любая помощь была бы принята с благодарностью. Я не могу понять, как создается столбец дважды. Я попытался удалить базу данных и предыдущие миграции и сделать «enable-migrations -forced» и перезапустить оттуда безрезультатно. Вероятно, это связано с отсутствием базовых знаний об EF с моего конца. Заранее благодарю за любую помощь!
Возможно ли, что ваша версия базы данных вышла из синхронизации - это значит, что она пытается обновиться, добавив 'OrderRecieveDate' в таблицу, где она существует? То же самое происходит, если вы создаете чистую БД с полем на модели и без миграции? – Basic
Я считаю, что может возникнуть проблема. Я попытался создать новую базу данных и засеять некоторую новую информацию, и теперь я получаю новую ошибку, в которой говорится: «Не удалось выполнить проверку для одного или нескольких объектов. Подробнее см.« Свойство EntityValidationErrors ». – user3294244
Мне не нравится спрашивать очевидное, но ... Что содержит свойство EntityValidationErrors? – Basic