[英]Insert data in two Different tables on InsertOnSubmit() Using Linq asp.net c#
[英]Linq not adding data to table, using InsertOnSubmit() & SubmitChanges()
我正在使用LINQ將數據插入數據庫。 問題是執行代碼后,數據沒有添加到表中。
這是我的工作:執行代碼→轉到服務器資源管理器中的“數據連接”→刷新表。
但是表中沒有顯示行。
下面是我的代碼。 任何幫助將非常感激。 謝謝。
private static LinqToSqlDataContext dbContext;
static Tables() //constructor
{
string connectionString = ConfigurationManager.ConnectionStrings["MusicPlayerDBConnectionString"].ConnectionString;
dbContext = new LinqToSqlDataContext(connectionString);
}
public static void AddTrack(Track track) // Track is custom data structure
{
Track_Table trackTable = CreateTrack(track);
dbContext.Track_Tables.InsertOnSubmit(trackTable);
dbContext.SubmitChanges();
}
private static Track_Table CreateTrack(Track track)
{
Track_Table trackTable = new Track_Table
{
Track_Id = track.Id,
Title = track.Title,
Album_Id = null,
Artist = track.Artist,
Duration = track.Duration,
Path = track.Path,
Image_Path = track.imagePath
};
return trackTable;
}
更改
dbContext.Track_Tables.InsertOnSubmit(trackTable); to
dbContext.Track_Tables.Add(trackTable);
接着
dbContext.SaveChanges();
如果您有此類:
public class Track
{
public int Id {get; set;}
public int Number {get; set;}
public string Title{get; set;}
// etc
}
然后,您的DbContext應該看起來像這樣:
public class MusicDbContext : DbContext // inherit from Entity Framework
{
public DbSet<Track> Tracks{get;set;} // This maps to the database
}
這實際上就是您所需要的。 如果您的數據庫表被命名為“ Tracks”,則映射將“發生”,並且您現在擁有了一系列的軌跡,可用來像這樣來更新,添加,刪除(CRUD):
...
var myContext = new MusicDbContext();
myContext.Tracks.Add(theNewTrack);
myContext.SaveChanges();
...
重要的提示
不要為您的DbContext類創建靜態變量。 實體框架將緩存保留在其自己的內部靜態對象中,如果您嘗試將DbContext持久化為靜態對象,則在進行幾次更新后,奇怪的事情就會開始發生。 總是更新上下文。 首次初始連接后,它確實非常快,並且可以為您提供整潔的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.