Сначала я пытался написать код и добавить миграцию в этот код, но не мог понять, что я делаю неправильно.имейте в виду, я пытаюсь создать приложение MVC
для размещения и покупки продуктов.
, что означает, что у меня есть две модели продуктов и пользователей, я уже не могу понять, как разделить незарегистрированный аккаунт изарегистрированные учетные записи.
Я думал о создании функции, которая может возвращать -1, если она не зарегистрирована, и идентификатор учетной записи, если она зарегистрирована, но не знаю как.
это мой код:
public class Products
{
[Required]
public long Id { get; set; }
public long UserId { get; set; }
public long OwnerId { get; set; }
[ForeignKey("OwnerId")]
public Users Owner { get; set; }
[ForeignKey("UserId")]
public Users User { get; set; }
public string Title { get; set; }
public string ShortDescription { get; set; }
public string LongDescription { get; set; }
[Required]
public DateTime Date { get; set; }
public decimal Price { get; set; }
[Column("Picture1", TypeName = "image")]
public byte[] Picture1 { get; set; }
[Column("Picture2", TypeName = "image")]
public byte[] Picture2 { get; set; }
[Column("Picture3", TypeName = "image")]
public byte[] Picture3 { get; set; }
public int State { get; set; }
}
мой класс Users
public class Users
{
public long Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public DateTime BirthDate { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string UserName { get; set; }
[Required]
public string Password { get; set; }
}
и DBContext:
public class SiteDBContext : DbContext
{
public SiteDBContext()
: base("name =SiteDBContext")
{
}
public DbSet<Users> Users { get; set; }
public DbSet<Products> Products { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
Когда я пытался выполнить миграцию, это вызвало эту ошибку:
Введение ограничения FOREIGN KEY
'FK_dbo.Products_dbo.Users_UserId'
в таблицу 'Products'
может привести к возникновению циклов или нескольких каскадных путей.Укажите ON DELETE NO ACTION
или ON UPDATE NO ACTION
или измените другие ограничения FOREIGN KEY
.Не удалось создать ограничение или индекс.Смотрите предыдущие ошибки.
Спасибо всем, если здесь есть какая-то понятная информация, пожалуйста, спросите, и я объясню лучше.еще раз спасибо!
CreateTable(
"dbo.Products",
c => new
{
Id = c.Long(nullable: false, identity: true),
OwnerId = c.Long(nullable: false),
UserId = c.Long(nullable: false),
Title = c.String(),
ShortDescription = c.String(),
LongDescription = c.String(),
Date = c.DateTime(nullable: false),
Price = c.Decimal(nullable: false, precision: 18, scale: 2),
Picture1 = c.Binary(storeType: "image"),
Picture2 = c.Binary(storeType: "image"),
Picture3 = c.Binary(storeType: "image"),
State = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Users", t => t.UserId, cascadeDelete: true)
.ForeignKey("dbo.Users", t => t.OwnerId, cascadeDelete: true)
.Index(t => t.OwnerId)
.Index(t => t.UserId);
это миграция, созданная, и все еще не может обновить базу данных с ошибкой, которая может вызвать циклы или несколько путей каскада.кто-нибудь?