我有两个模型类Move
和PlanMove
。每个PlanMove
对象都必须包含Move
个对象,换句话说,每个PlanMove
都有一个Move
,Move
是一个独立的类。
我创建了一个Move
模型类,如下所示:
public class Move : BaseModel
{
[Display(Name = "نام حرکت")]
public string Name { get; set; }
[Display(Name = "توضیح حرکت")]
[UIHint("_SummerNote")]
[AllowHtml]
public string Description { get; set; }
[Display(Name = "تصویر")]
public string ImageUrl { get; set; }
[Display(Name = "تصویر بندانگشتی")]
public string ThumbnailImageUrl { get; set; }
[Display(Name = "فیلم")]
public string VideoUrl { get; set; }
[Display(Name = "گروه حرکت")]
[ForeignKey("MoveGroup")]
public string MoveGroupId { get; set; }
public virtual ICollection<MoveGroup> MoveGroup { get; set; }
}
注意:Move
模型类是一个独立的模型类。
我创建PlanMove
就像这样:
public class PlanMove:BaseModel
{
[ForeignKey("FitnessPlanDay")]
public Guid FitnessPlanDayId { get; set; }
[Display(Name="حرکات جایگزین")]
public List<Move> AlternativeMove { get; set; }
[Display(Name="دفعات تکرار حرکت")]
public byte Count { get; set; }
[Display(Name="دفعات ست حرکت")]
public byte Set { get; set; }
[Display(Name="شماره گروه حرکات سوپر")]
public byte? SuperNumber { get; set; }
[Display(Name="تعداد ست مجموع حرکات سوپر")]
public byte? SuperSet { get; set; }
[Display(Name="میزان فشار وزنه بر بدن")]
public WeighPressure WeighPressure { get; set; }
[ForeignKey("Move")]
public Guid MoveId { get; set; }
public virtual Move Move { get; set; }
public virtual FitnessPlanDay FitnessPlanDay { get; set; }
}
正如您在上面的类中看到的,为了保存一个Move
模型(这是一个独立的模型类),我写了这些属性:
[ForeignKey("Move")]
public Guid MoveId { get; set; }
public virtual Move Move { get; set; }
但实体框架6代码首先在数据库中为PlanMove_Id
类创建Move
列。我说这个模型是独立的,不需要与另一个模型通信(我的意思是PlanMove
模型类)。
T-SQL Move
表:
CREATE TABLE [dbo].[Moves]
(
[Id] UNIQUEIDENTIFIER DEFAULT (newsequentialid()) NOT NULL,
[Name] NVARCHAR(MAX) NULL,
[Description] NVARCHAR(MAX) NULL,
[ImageUrl] NVARCHAR(MAX) NULL,
[ThumbnailImageUrl] NVARCHAR(MAX) NULL,
[VideoUrl] NVARCHAR(MAX) NULL,
[MoveGroupId] NVARCHAR(MAX) NULL,
[PlanMove_Id] UNIQUEIDENTIFIER NULL,
CONSTRAINT [PK_dbo.Moves] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_dbo.Moves_dbo.PlanMoves_PlanMove_Id]
FOREIGN KEY ([PlanMove_Id]) REFERENCES [dbo].[PlanMoves]([Id])
);
但是PlanMove
模型还可以。
当然我的一些工作是错误的,如何将独立模型保存到另一个模型?
答案 0 :(得分:0)
我找到了解决方案。 对于这种情况,我需要在两个表之间建立2个关系。关系是一对多,多对多。
当两个实体具有多个实体时,将使用InverseProperty属性 一个关系。
您可以使用
InverseProperty
和ForeignKey
属性进行配置 相同实体之间的多重关系。
所以我将我的模型改为:
举:
public class Move : BaseModel
{
[Display(Name = "نام حرکت")]
public string Name { get; set; }
[Display(Name = "توضیح حرکت")]
[UIHint("_SummerNote")]
[AllowHtml]
public string Description { get; set; }
[Display(Name = "تصویر")]
public string ImageUrl { get; set; }
[Display(Name = "تصویر بندانگشتی")]
public string ThumbnailImageUrl { get; set; }
[Display(Name = "فیلم")]
public string VideoUrl { get; set; }
[Display(Name = "گروه حرکت")]
[ForeignKey("MoveGroup")]
public string MoveGroupId { get; set; }
public virtual ICollection<MoveGroup> MoveGroup { get; set; }
[InverseProperty("OrginalMove")]
public virtual ICollection<PlanMove> Orginal { get; set; }
[InverseProperty("AlternativePlanMoves")]
public virtual ICollection<PlanMove> AlternativeMove { get; set; }
}
}
和PlanMove:
public class PlanMove:BaseModel
{
[Display(Name="دفعات تکرار حرکت")]
public byte Count { get; set; }
[Display(Name="دفعات ست حرکت")]
public byte Set { get; set; }
[Display(Name="شماره گروه حرکات سوپر")]
public byte? SuperNumber { get; set; }
[Display(Name="تعداد ست مجموع حرکات سوپر")]
public byte? SuperSet { get; set; }
[Display(Name="میزان فشار وزنه بر بدن")]
public WeighPressure WeighPressure { get; set; }
[Display(Name = "حرکات جایگزین")]
public virtual ICollection<Move> AlternativePlanMoves { get; set; }
[ForeignKey("OrginalMove")]
public Guid? MoveId { get; set; }
[Display(Name = "حرکت")]
public virtual Move OrginalMove { get; set; }
[ForeignKey("FitnessPlanDay")]
public Guid FitnessPlanDayId { get; set; }
public virtual FitnessPlanDay FitnessPlanDay { get; set; }
}
了解更多信息:MoreInfo