最近在做一个使用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. DEDECMS中的几个常见的自定义常量DEDEMEMBER等位置

    http://www.dede58.com/a/dedejq/3567.html dedecms新建栏目时默认都是允许投稿的,可以投稿本来对网站来说是件好事,但是dedecms是开源的,使用太广泛了, ...

  2. YAML书写规范

    1. 认识 YAML YAML是一个类似 XML.JSON 的标记性语言.YAML 强调以数据为中心,并不是以标识语言为重点.因而 YAML 本身的定义比较简单,号称"一种人性化的数据格式语 ...

  3. js计算元素距离顶部的高度及元素是否在可视区判断

    前言: 在业务当中,我们经常要计算元素的大小和元素在页面的位置信息.比如说,在一个滚动区域内,我要知道元素A是在可视区内,还是在隐藏内容区(滚动到外边看不到了).有时还要进一步知道,元素是全部都显示在 ...

  4. python 序列

    序列 序列是python中的一种数据结构,这种数据结构根据索引来获取序列中的对象 有6种内建序列类:list,tuple,string,unicode,buffer,xrange. 其中xrange比 ...

  5. 记一些安卓app反编译修改的记录

    2017-12-2209:00:40 好几天没有写过博客了,因为马上要期末考试,只能暂且放下我的小玩物,专心复习我的期末考试. 今天突然想设置一个安卓的栏目,记录下自己从高中就爱玩的一些东西,像刷机呀 ...

  6. python3 第五章 - 什么是变量、运算符、表达式

    在读这一章时,运算符的内容比较多,不要去死记.现在记不住也没有关系,现在只要有这个印象.在后面的学习中,会慢慢加深理解,在理解中去记就容易得多了 1.变量 什么是变量?通俗的讲,就是存储在内存中可以变 ...

  7. CentOS之7与6的区别

    前言 centos7与6之间最大的差别就是初始化技术的不同,7采用的初始化技术是Systemd,并行的运行方式,除了这一点之外,服务启动.开机启动文件.网络命令方面等等,都说6有所不同.让我们先来了解 ...

  8. 【转】Linux shell笔记

    由于工作的需要,越来越多的接触到linux系统.最近看了<Linux与Unix Shell>这本书,安装书的章节整理了一些自己认为比较重要的命令,方便以后查阅. No.001 文件安全与权 ...

  9. H3c交换机配置端口镜像详情

    端口镜像 需要将G0/0/1口的全部流量镜像到G0/0/2口,即G0/0/1为源端口,G0/0/2为目的端口. 配置步骤 1.进入配置模式:system-view: 2.创建本地镜像组:mirrori ...

  10. tensorflow.python.framework.errors_impl.OutOfRangeError: FIFOQueue

    tensorflow.python.framework.errors_impl.OutOfRangeError: FIFOQueue 原创文章,请勿转载哦~!! 觉得有用的话,欢迎一起讨论相互学习~F ...