EF问题集合

论坛 期权论坛     
匿名技术用户   2021-1-15 14:20   0   0
<div class="blogpost-body" id="cnblogs_post_body">
<p><span style="font-size:16px;"><strong>1. 在使用数据迁移的过程中,如果手工删除了本地数据库之后,再次尝试连接被删除的数据库,会有以下提示:</strong></span></p>
<p>System.Data.SqlClient.SqlException (0x80131904): Cannot open database &#34;ContosoUniversity3&#34; requested by the login. The login failed.</p>
<p>修复方法:打开SQL Server Management Studio,连接上被删除数据库所在的引擎(一般是LocalDB),在Tool中再删除一次显示在列表中的数据库,会提示无法删除,文件不存在等等过,</p>
<p>不必管它,断开连接,再次连接,可以看到数据库已经不在列表当中,现在数据迁移可以再次使用被删除的数据库名</p>
<p>如果没有SSMS,可以执行‘sqllocaldb.exe stop v11.0’和‘sqllocaldb.exe delete v11.0’(未实测),以上知识来自下面的提问:</p>
<p>http://stackoverflow.com/questions/21592062/ef6-migrations-localdb-update-database-login-failed</p>
<p>http://stackoverflow.com/questions/13275054/ef5-cannot-attach-the-file-0-as-database-1/16339164#16339164</p>
<p> </p>
<p><strong><span style="font-size:16px;">2. 使用数据迁移的流程:</span></strong></p>
<p>来自:http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application</p>
<p>注释掉Web.Config当中的数据初始化器的代码</p>
<p>修改连接字符串,使用新数据库</p>
<p>执行enable-migrations</p>
<p>执行add-migration XXXXXX(为迁移生成快照,同时生成迁移用的文件,可以修改生成的文件)</p>
<p>执行update-database(更新改动到数据库当中)</p>
<p> </p>
<p><strong><span style="font-size:16px;">3. 使用代码执行迁移,查看迁移生成的代码</span></strong></p>
<p>https://romiller.com/2012/02/09/running-scripting-migrations-from-code/</p>
<pre class="code">var configuration &#61; new Configuration();
var migrator &#61; new DbMigrator(configuration);
migrator.Update();<br><br></pre>
<pre class="code">var configuration &#61; new Configuration();
var migrator &#61; new DbMigrator(configuration);
var scriptor &#61; new MigratorScriptingDecorator(migrator);
string script &#61; scriptor.ScriptUpdate(sourceMigration: null, targetMigration: null);<br><br><strong><span style="font-size:16px;">4.EF在转换成JsonResult时遇到无限循环的解决办法</span></strong><br>序列化类型为“System.Data.Entity.DynamicProxies.Photos_1F5D250F2735650E782711718DE2EFF2BBEA68EE8F6C5A1CF253FAABD0681F7B”的对象时检测到循环引用。<br>来自:http://www.cnblogs.com/gmxq/p/4921974.html<br>干净优雅的好方法<br>摘抄于下:</pre>
<div class="cnblogs_code">
  <img alt="" class="code_img_closed" id="code_img_closed_a8689c72-573b-4c9f-b666-684884ab2e90" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-8f900a89c6347c561fdf2122f13be562.gif">
  <img alt="" class="code_img_opened" id="code_img_opened_a8689c72-573b-4c9f-b666-684884ab2e90" src="https://201907.oss-cn-shanghai.aliyuncs.com/cs/5606289-961ddebeb323a10fe0623af514929fc1.gif">
  <div class="cnblogs_code_hide" id="cnblogs_code_open_a8689c72-573b-4c9f-b666-684884ab2e90">
   <pre class="blockcode"><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span><span style="color:#000000;"> MyJsonResult : JsonResult
    {
        </span><span style="color:#0000ff;">public</span> JsonSerializerSettings Settings { <span style="color:#0000ff;">get</span>; <span style="color:#0000ff;">private</span> <span style="color:#0000ff;">set</span><span style="color:#000000;">; }

        </span><span style="color:#0000ff;">public</span><span style="color:#000000;"> MyJsonResult()
        {
            Settings </span>&#61; <span style="color:#0000ff;">new</span><span style="color:#000000;"> JsonSerializerSettings
            {
         </span><span style="color:#008000;">//</span><span style="color:#008000;">这句是解决问题的关键,也就是json.net官方给出的解决配置选项.                 </span>
          ReferenceLoopHandling &#61;<span style="color:#000000;"> ReferenceLoopHandling.Ignore
            };
        }

        </span><span style="color:#0000ff;">public</span> <span style="color:#0000ff;">override</span> <span style="color:#0000ff;">void</span><span style="color:#000000;"> ExecuteResult(ControllerContext context)
        {
            </span><span style="color:#0000ff;">if</span> (context &#61;&#61; <span style="color:#0000ff;">null</span><span style="color:#000000;">)            
                </span><span style="color:#0000ff;">throw</span> <span style="color:#0000ff;">new</span> ArgumentNullException(<span style="color:#800000;">&#34;</span><span style="color:#800000;">context</span><span style="color:#800000;">&#34;</span><span style="color:#000000;">);
            </span><span style="color:#0000ff;">if</span> (<span style="color:#0000ff;">this</span>.JsonRequestBehavior &#61;&#61; JsonRequestBehavior.DenyGet &amp;&amp; <span style="color:#0000ff;">string</span>.Equals(context.HttpContext.Request.HttpMethod,
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP