我有一个资产表和一个客户端表。 当客户创建资产时,会为客户端创建一个外键。
现在我需要在资产中添加 CustomMetadata 。首先,我创建了一个名为 ClientMetadata 的表,如下所示:
CREATE TABLE [dbo].[CompanyMetadata](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ClientId] [nvarchar](128) NOT NULL,
[TypeId] [int] NOT NULL,
[Name] [varchar](255) NOT NULL,
[DefaultValue] [varchar](255) NULL,
[Values] [text] NULL,
[Order] [int] NOT NULL,
[Filter] [bit] NOT NULL,
PRIMARY KEY CLUSTERED
(
[Id] ASC
)
GO
ALTER TABLE [dbo].[ClientMetadata] WITH CHECK ADD FOREIGN KEY([ClientId])
REFERENCES [dbo].[Clients] ([Id])
GO
ALTER TABLE [dbo].[ClientMetadata] WITH CHECK ADD FOREIGN KEY([TypeId])
REFERENCES [dbo].[ClientMetadataTypes] ([Id])
GO
所以我现在需要的是一个名为CustomMetadata的表,它引用了资产和 ClientMetadata ,但我不确定如何设置它,因为它会需要它自己的价值,EF在获得资产时需要吸引。
所以资产会有一个像
这样的导航属性public virtual ICollection<CustomMetadata> Metadata { get; set; }
CustomMetadata 将如下所示:
public partial class ClientMetadata
{
public int Id { get; set; }
public string ClientId { get; set; }
public int TypeId { get; set; }
public string Name { get; set; }
public string DefaultValue { get; set; }
public string Value { get; set; }
public int Order { get; set; }
public bool Filter { get; set; }
public virtual ClientMetadataTypes ClientMetadataTypes { get; set; }
public virtual Asset Asset { get; set; }
}
值将是资产存储的实际值。
有谁知道怎么做?
我希望这一切都有道理。
干杯,
/ r3plica