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