最近在做一个使用ASP.NET MVC DEVEXPRESS和EF的OA模块 遇到不少问题这里记录一下:

1 如果项目中存在多个上下文类(DBContext的派生类),在做数据迁移的时候需要在不同目录下和对应类名分别启用Migration,具体指令可以参考:

  http://www.cnblogs.com/Jack-Blog/p/4699596.html?ptvd

 

前言

本人在阿里云申请了个免费的空间,之前已经存放了一个项目,由于之前一直没时间,近期比较有空,所以想开发个个人博客,但是由于阿里云没有给我们权限来新建数据库,因此只能在原有的数据库另外“瓜分”一部分空间来做个人博客的数据库,我是在之前的JackSite.Entities实体项目上开发,因此只需要在定义一个DbContext即可。

PS:本次讨论的使用范围:通过EF6(低版本是否支持多数据上下文我并不了解)用一个数据库构造多个DbContext

 

实现目标

原本默认Migration的文件是在Migrations,我现在希望已如下的形式来存放

Migrations项目中添加文件夹AMigration,BMigration文件来区分不同的DbContext迁移文件。

 

设置多数据上下文

首先我查找了下资料并未发现有类似Move-Migrations或者Update-Migrations的命令,因此我设想是是否同样是通过Enable-Migrations进行设置 
通过google 搜索关键字Single Database Multiple DbContext 搜到确实和我想象的一致都是通过此命令来设置多个数据库上下文的迁移文件路径 在抱着试试看的态度,进行了如下命令输入:

 
  1. Enable-Migrations -ContextTypeName:JackSite.Entities.Models.StudyTime.JackDbContext -MigrationsDirectory:Migrations\StudyTimeMigrations

ContextTypeNameDbContext的位置,即DbContext的命名空间加上DbContext的名称 
MigrationsDirectory:需要迁移到的目标文件夹 
PS:注意MigrationsDirectory:Migrations\StudyTimeMigrations中的'\'不要打错如输成'/'可能会引发一些问题 
同样我们对另一个数据上下文进行设置

 
  1. Enable-Migrations -ContextTypeName:JackSite.Entities.Models.Blog.BlogDbContext -MigrationsDirectory:Migrations\BlogMigrations

PS:这里两个DbContext用的是同样的连接串

 

更新数据脚本

最后通过运行Add-Migrations命令

这里需要注意:如果我们只有一个数据上下文,通过Add-Migrations命令会自动选择唯一的DbContext,但是如果有多个DbContext,我们必须指定我们需要对那个DbContext进行修改

 
  1. Add-Migration -ConfigurationTypeName JackSite.Entities.Migrations.BlogMigrations.Configuration InitBlogDb

这里通过-ConfigurationTypeName指定Configuration 后面接着是Configuration的路径,然后接着是我们取得名字InitBlogDb 
EF会找到指定的Configuration,并添加XXXX_InitBlogDb,结构如下图所示:

最后通过Update-Database进行更新

同样,我们这里需要指定需要更新哪个Configuration

 
  1. Update-Database JackSite.Entities.Migrations.BlogMigrations.Configuration
 
2 使用EF和ASP.NET MVC的时候,如果视图中没有绑定KEY,需要用一个Html.HiddenFor(m=>m.key)来绑定主键,这样方便在后续post回发中获取对象的key。然后由于ASP.NET是短连接,回发的model是重新创建的detached状态,需要重新attach到DbContext才能正确更新。
 
 
3 DEVEXPRESS的文件上传控件不适合asp.net mvc的附件随表单上传,直接用input type=file上传更简单方便,另外上传文件的表单form要加enctype="multipart/form-data"属性,并且input type=file元素要有不同的name属性,否则服务端会收不到上传的文件。

未完待续...

devexpress entity framework 与 asp.net mvc的坑的更多相关文章

  1. Entity Framework在Asp.net MVC中的实现One Context Per Request(附源码)

    上篇中"Entity Framework中的Identity map和Unit of Work模式", 由于EF中的Identity map和Unit of Work模式,EF体现 ...

  2. Entity Framework在Asp.net MVC中的实现One Context Per Request(转)

    上篇中"Entity Framework中的Identity map和Unit of Work模式", 由于EF中的Identity map和Unit of Work模式,EF体现 ...

  3. ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 Entity Fram ...

  4. Asp.Net MVC4开发二: Entity Framework在Asp.Net MVC4中的应用

    ORM作为一种数据库訪问机制已广泛地应用于各种项目其中,在.Net开发中,应用比較广泛的ORM框架大致有以下几个: 官方支持的有:Linq to SQL.Entity Framework.三方的有:N ...

  5. 案例:1 Ionic Framework+AngularJS+ASP.NET MVC WebApi Jsonp 移动开发

    落叶的庭院扫的一干二净之后,还要轻轻把树摇一下,抖落几片叶子,这才是Wabi Sabi的境界. 介绍:Ionic是移动框架,angularjs这就不用说了,ASP.Net MVC WebApi提供数据 ...

  6. Developing a plugin framework in ASP.NET MVC with medium trust

    http://shazwazza.com/post/Developing-a-plugin-framework-in-ASPNET-with-medium-trust.aspx January 7, ...

  7. Using the Repository Pattern with ASP.NET MVC and Entity Framework

    原文:http://www.codeguru.com/csharp/.net/net_asp/mvc/using-the-repository-pattern-with-asp.net-mvc-and ...

  8. [转]Using the Repository Pattern with ASP.NET MVC and Entity Framework

    本文转自:http://www.codeguru.com/csharp/.net/net_asp/mvc/using-the-repository-pattern-with-asp.net-mvc-a ...

  9. ASP.NET Entity Framework with MySql服务器发布环境配置

    首先,.net应该自带Entity Framework,所以服务器只要有对应版本的.net Framework就OK! 我们在开发环境中一般会直接使用edmx来管理应用程序与数据库的交互操作,所有与数 ...

随机推荐

  1. 获取select中的值

    分别使用javascript原生的方法和jquery方法<select id="test" name=""> <option value=&q ...

  2. destoon各栏目调用汇总

    ================================================================== destoon各栏目调用汇总 ================== ...

  3. 可变数目参数----关键字params的使用

    如何定义和使用可变数目参数的方法,使用关键字params. 即其他语言的可变参数 Code public class App { static void Main() { //常规使用方法 Conso ...

  4. Weblogic新建域,Weblogic新建部署环境,Weblogic重新构建域

    Weblogic新建域,Weblogic新建部署环境,Weblogic重新构建域 ======================== 蕃薯耀 2018年1月29日 http://www.cnblogs. ...

  5. Java进阶篇(六)——Swing程序设计(下)

    三.布局管理器 Swing中,每个组件在容器中都有一个具体的位置和大小,在容器中摆放各自组件时很难判断其具体位置和大小,这里我们就要引入布局管理器了,它提供了基本的布局功能,可以有效的处理整个窗体的布 ...

  6. javabean内省

    何为JavaBean? JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共 ...

  7. vim 实用配置

    修改文件~/.vimrc 如下: set nu " 显示行号colorscheme torte " 设定配色方案set tabstop=4 " 设定 tab 长度为 4s ...

  8. 02_HTML5+CSS详解第三天

    WebStorage简单的网页留言板用到的函数有3个1.saveStorage函数使用"new Date().getTime()"语句来获取当前的日期和时间戳,然后使用localS ...

  9. 【转】 linux下的awk程序执行

    #!/bin/awk -f awk脚本开头使用这个命令,赋予这个文本文件以执行的权限.这样做之后,你就可以在命令行中用类似于下面这样的方式调用并执行这段awk程序了. BEGIN和END的大括号必须紧 ...

  10. DRBD的主备安装配置

    drbd软件包链接:https://pan.baidu.com/s/1eUcXVyU 密码:00ul 1.使用的资源:1.1 系统centos6.9 mini1.2 两台节点主机node1.node2 ...