我正在使用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;
}
答案 0 :(得分:0)
更改
dbContext.Track_Tables.InsertOnSubmit(trackTable); to
dbContext.Track_Tables.Add(trackTable);
然后
dbContext.SaveChanges();
答案 1 :(得分:0)
如果你有这门课程:
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
}
这真的是你所需要的。如果您的数据库表名为&#34; Tracks&#34;然后映射将发生&#34;刚刚发生&#34;你现在有一组曲目可以用来更新和添加,删除(CRUD),如下所示:
...
var myContext = new MusicDbContext();
myContext.Tracks.Add(theNewTrack);
myContext.SaveChanges();
...
重要提示
不要创建DbContext类的静态变量。实体框架将缓存保存在自己的内部静态对象中,如果您尝试将DbContext保持为静态,那么在经过一些更新后,奇怪的事情就会开始发生。始终是新的背景。在第一次初始连接后它真的很快,并且为您提供更清晰的代码。