我正在尝试使用ASP.NET MVC框架和Entity Framework 6创建我的第一个应用程序。
我选择使用代码优先方法,然后开始定义我的模型。
我有一个名为Client
的模型,其标识属性为Id
。我有多个模型,它们有一个名为ClientId
的属性。 ClientId
属性应具有指向Clients
模型的虚拟链接。
以下是我的Client
模型的样子
[Table("clients")]
public class Client
{
[Key]
public int id { get; set; }
public string name { get; set; }
public string status { get; set; }
public DateTime created_at { get; set; }
public DateTime? modified_at { get; set; }
public Client()
{
status = "Active";
created_at = DateTime.UtcNow;
}
}
接下来是我如何使用其他模型创建属于关系。
[Table("BaseClientsToUsers")]
public class ClientToUser : ModelDefault
{
[ForeignKey("User")]
public int UserID { get; set; }
[ForeignKey("Client")]
public int ClientId { get; set; }
[ForeignKey("Team")]
public int DefaultTeamId { get; set; }
public DateTime? JoinedAt { get; set; }
public bool IsActive { get; set; }
public virtual User User { get; set; }
public virtual Client Client { get; set; }
public virtual Team Team { get; set; }
public ClientToUser()
{
DateTime UtcNow = DateTime.UtcNow;
IsActive = true;
CreatedAt = UtcNow;
LastUpdatedAt = UtcNow;
}
[Table("BaseTeams")]
public class Team : ModelDefault
{
[MaxLength(250)]
public string Name { get; set; }
[ForeignKey("Client")]
public int ClientId { get; set; }
public bool IsActive { get; set; }
public virtual Client Client { get; set; }
public Team()
{
DateTime UtcNow = DateTime.UtcNow;
IsActive = true;
CreatedAt = UtcNow;
LastUpdatedAt = UtcNow;
}
}
但是,当我尝试更新我的数据库时,我收到以下错误
引入FOREIGN KEY约束 表'BaseTeams'上的'FK_dbo.BaseTeams_dbo.BaseClients_ClientId'可能 导致循环或多个级联路径。指定ON DELETE NO ACTION或 ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。可以 不创建约束或索引。查看以前的错误。
我不确定导致错误的原因,但似乎是因为我正在为同一个`Clients模型创建多个外键。
如何解决此错误?
答案 0 :(得分:0)
Hello @Mike A当我启动MVC时我也遇到了这个错误,因此您需要连接数据库项目的附加表。 因此,尝试使用以下表格连接数据库项: 这是我的工作示例:
[Table("Products")]
public class Product
{
[Key]
public string Id { get; set; }
[Required]
public string Name { get; set; }
public string Description { get; set; }
public int Quantity { get; set; }
public decimal Price { get; set; }
public decimal InternalPrice { get; set; }
public string Url { get; set; }
}
[Table("Categories")]
public class Category
{
[Key]
public string Id { get; set; }
[Required]
public string Name { get; set; }
public string Url { get; set; }
}
[Table("ProductCategories")]
public class ProductCategory
{
[Key]
[Column(Order = 0)]
public string ProductId { get; set; }
[Key]
[Column(Order = 1)]
public string CategoryId { get; set; }
public virtual Category Category { get; set; }
}
因此,您可以毫无问题地连接您的物品,希望这对您有所帮助。