昨天我发现了这个很棒的 ORM,并想对比 github 上提供的示例更复杂的东西进行一些测试。
这是我正在使用的模型
class BaseClass
{
[AutoIncrement]
public int Id { get; set; }
[StringLength(200)]
public string Name { get; set; }
}
[Alias("artist")]
class Artist : BaseClass
{
}
[Alias("genre")]
class Genre : BaseClass
{
}
[Alias("artistgenre")]
class ArtistGenre
{
[PrimaryKey]
public int Id { get; set; }
[Alias("idgenre")]
[References(typeof(Genre))]
public int IdGenre { get; set; }
[Alias("idartist")]
[References(typeof(Artist))]
public int IdArtist { get; set; }
}
这就是我想要实现的目标(尽管它不起作用,因为在插入artistgenre 表时身份值是未知的)。
if (dbConn.TableExists("artistgenre"))
dbConn.DropTable<ArtistGenre>();
if (dbConn.TableExists("artist"))
dbConn.DropTable<Artist>();
if (dbConn.TableExists("genre"))
dbConn.DropTable<Genre>();
dbConn.CreateTables(false, typeof(Artist), typeof(Genre), typeof(ArtistGenre));
var genres = new List<Genre>();
genres.Add(new Genre() { Name = "Rock" });
genres.Add(new Genre() { Name = "Pop" });
genres.Add(new Genre() { Name = "Jazz" });
genres.Add(new Genre() { Name = "Classic" });
genres.Add(new Genre() { Name = "Bossanova" });
var artists = new List<Artist>();
artists.Add(new Artist() { Name = "Rush" });
artists.Add(new Artist() { Name = "Queen" });
artists.Add(new Artist() { Name = "Pat Metheny" });
var ag = new List<ArtistGenre>();
var a = artists.FirstOrDefault(c => c.Name == "Rush");
var g = genres.FirstOrDefault(c => c.Name == "Rock");
ag.Add(new ArtistGenre() { IdArtist = a.Id, IdGenre = g.Id });
dbConn.SaveAll<Artist>(artists);
dbConn.SaveAll<Genre>(genres);
dbConn.SaveAll<ArtistGenre>(ag);
除了添加每一行并获取其标识值之外,还有一个简单的解决方案吗?
谢谢。