最近在做一个使用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. 如何查看sublime安装了哪些插件

    你应该安装过package control. 那么只要这样:按ctrl+shift+p,输入package,选择list packages,就看到了. 或者直接查看Installed Packages ...

  2. 邓_ Jqery·笔记本【照片】

    -------------------------------------------------------------------------------------------- [PHP] - ...

  3. iOS enum 定义与使用

    枚举其实很重要,特别是在应用开发初期,服务器端数据格式需要更改得情况下,枚举和宏都能是程序简洁,并且改动小. 网上有个人写的言简意赅,适合初学 转自:http://blog.csdn.net/ysy4 ...

  4. Java之IO流学习总结【下】

    2.字节流 |-- InputStream(读) |-- OutputStream(写) 由于字节是二进制数据,所以字节流可以操作任何类型的数据,值得注意的是字符流使用的是字符数组char[]而字节流 ...

  5. 【jsp】MyEclipse10.7.1最新版+破解下载

    MyEclipse企业级工作平台[1](MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开 ...

  6. 详解javascript中的闭包

    全局变量与局部变量 在说闭包之前先说明全局变量与局部变量 全局变量:变量声明时如果不使用 var 关键字,那么它就是一个全局变量,即便它在函数内定义. 局部变量:使用var关键字定义 全局变量/局部变 ...

  7. MVVM探索:从ViewModel关闭Window的最佳实践

    在WPF里使用MVVM开发的时候,似乎总是不可避免的会遇到这样一个问题:ViewModel在处理完业务之后需要关闭这个Window,这时候要怎么处理? 网上有很多解决方案:有的在ViewModel抛出 ...

  8. web开发概述

    1 Web概述 Web,在英语中表示网页的额意思,它用于表示Internet主机上供外界访问的资源. 2 Web的分类 按照服务器上的资源分类: 静态资源:指的是web页面中供人们浏览的数据是始终不变 ...

  9. ( ! ) Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in D:\demo\code\yolo\index\index.php on li

    sql语句为:$sql="select count(*) from com where a_id=$v['id']"; 出现以下错误: 原因: 变量没有用花括号引起来 改为:  $ ...

  10. 【转】Linux上vi(vim)编辑器使用教程

    Linux上vi(vim)编辑器使用教程 ------------------------------------------------------------ ikong ------------ ...