C# EF 将数据添加到模型
本文关键字:模型 添加 数据 EF | 更新日期: 2023-09-27 18:36:32
我有那些模型
class Artist
{
public int Id { get; set; }
[StringLength(500)]
public string Name { get; set; }
[StringLength(50)]
public string LastName { get; set; }
public virtual ICollection<SimilarArtist> SimilarArtists { get; set; }
}
class SimilarArtist
{
public int Id { get; set; }
public int ArtistId { get; set; }
[ForeignKey("ArtistId")]
public Artist Artist { get; set; }
public int Similar_Artist_Id { get; set; }
}
因此,每个艺术家都链接到同一表中的其他 5 位艺术家。当迁移生成数据库时,它使这种浪费。
SELECT [Id]
,[Name]
,[LastName]
FROM [dbo].[Artists]
SELECT [Id]
,[ArtistId]
,[Similar_Artist_Id]
FROM [dbo].[SimilarArtists]
因此,当我选择模型时,它会返回此
var similar = _db.Artists.FirstOrDefault(x => x.Name == id).SimilarArtists.FirstOrDefault();
//similar.ArtistId
//similar.Id
//similar.Similar_Artist_Id
//similar.Artist //the object which return main artist
问题是我如何不仅Similar_Artist_Id而且在同一请求中获得"var similar"(无需Similar_Artist_Id提出请求)
var similarId = model.SimilarArtists.FirstOrDefault().Id;
var artiest = _db.Artists.Where(x.Id = similarId);
或只是:
similar.Artist.Name
或者,如果您希望能够具有强类型属性(如 similar.ArtistName
),请创建一个 [NotMapped]
getter 属性。
class SimilarArtist
{
public int Id { get; set; }
public int ArtistId { get; set; }
[ForeignKey("ArtistId")]
public Artist Artist { get; set; }
public int Similar_Artist_Id { get; set; }
[NotMapped]
public string ArtistName
{
get
{
return this.Artist.Name;
}
}
}
你可以做
var similar = _db.Artists.Where(x => x.Name == id)
.Select(a => a.SimilarArtists.FirstOrDefault())
.FirstOrDefault();
这为您提供了与谓词x.Name == id
匹配的第一个Artists
的第一个SimilarArtists
(及其所有属性)。