C#EF向模型添加数据
我有那些模型C#EF向模型添加数据,c#,entity-framework,C#,Entity Framework,我有那些模型 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 { g
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; }
}
因此,当我选择模型时,它会返回
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
问题是,我如何才能在同一请求中输入“var simple”,不仅输入similor\u Artist\u Id,还输入name和lastname(而不必输入similor\u Artist\u Id的请求)
或者只是:
similar.Artist.Name
或者,如果希望能够具有强类型属性,例如类似.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
1)匹配的第一批艺术家的第一批类似艺术家(及其所有属性)。当然我能做到,但这不是一个点2)相似。Artist.Name返回主艺术家名称,基于[ForeignKey(“ArtistId”)]的每个5Artist对象都是相同的,它返回我一直拥有的信息->主艺术家,但我需要基于相似的艺术家Id的对象。这就是问题所在。
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();