Entity Framework 在执行只读操作时写入数据库
Entity Framework writes in the database while doing a read-only operation
在控制台应用程序中,我有一个 SQL 服务器 CE 数据库,我正在使用 Entity Framework 访问它。为什么 .sdf
数据库的哈希值在只读操作后发生变化?
class Program
{
static void Main(string[] args)
{
string fileName = @" C:\...\bin\Debug\exportedDb.sdf";
Console.WriteLine("The Hash Before is -->"+ComputeHash(fileName));
using (var context = new DbaseEntities())
{
Console.WriteLine(context.ANNEES.First().ANNEE_UNIVERSITAIRE);
}
Console.WriteLine("The Hash After is -->" + ComputeHash(fileName));
Console.ReadLine();
}
public static string ComputeHash(string fileName)
{
var hash = "";
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(fileName))
{
hash = BitConverter.ToString(md5.ComputeHash(stream));
}
return hash;
}
}
}
以上代码给出 returns 这些结果:
当SQL CE引擎做排序等内部操作时,可以写入临时tables/objects数据库文件
但是,您可以通过更改连接字符串来防止这种情况发生。添加 Mode = Read Only 到您的连接字符串。
Data Source=C:\data\mydb.sdf;Mode=Read Only
在控制台应用程序中,我有一个 SQL 服务器 CE 数据库,我正在使用 Entity Framework 访问它。为什么 .sdf
数据库的哈希值在只读操作后发生变化?
class Program
{
static void Main(string[] args)
{
string fileName = @" C:\...\bin\Debug\exportedDb.sdf";
Console.WriteLine("The Hash Before is -->"+ComputeHash(fileName));
using (var context = new DbaseEntities())
{
Console.WriteLine(context.ANNEES.First().ANNEE_UNIVERSITAIRE);
}
Console.WriteLine("The Hash After is -->" + ComputeHash(fileName));
Console.ReadLine();
}
public static string ComputeHash(string fileName)
{
var hash = "";
using (var md5 = MD5.Create())
{
using (var stream = File.OpenRead(fileName))
{
hash = BitConverter.ToString(md5.ComputeHash(stream));
}
return hash;
}
}
}
以上代码给出 returns 这些结果:
当SQL CE引擎做排序等内部操作时,可以写入临时tables/objects数据库文件
但是,您可以通过更改连接字符串来防止这种情况发生。添加 Mode = Read Only 到您的连接字符串。
Data Source=C:\data\mydb.sdf;Mode=Read Only