1. 怎么才能引用 dbcontext
这是 EntityFramework (简称 EF)中的一个类,可以理解为一个数据库对象的实例。在 EF 中,无需手动的拼接 sql 语句对数据库进行增删改查,而是通过 DbContext 来进行相应操作。
题主应该要搜索的是 EF 的用法,而非 MVC。
2. mysql dbcontext 怎么连接
1.从官方网站下载ABP项目模板,并解压到本地,用VS打开,这里我们新建一个项目ConnectMySql。
2.设置XXX.Web为启动项目,Build这个Solution,使得NuGet下载相关的包。
3.准备好一个SQL Server数据库,修改Web.config数据库的ConnectionString,连接到SQL Server数据库。
4.打开Package Manager Console窗口,选择XXX.EntityFramework为默认项目,运行Update-Database命令,系统会在SQL Server中创建数据库和对应的表。
3. sql server compact4.0怎么修改表名
本文接续自《Code-First 在SQLServer Compact 4.0 中的应用(一),基础配置》,解决数据库架构需要变更时遇到的问题。
测试环境: Visual Studio 2012、Entity Framework 5.0、SQL Server Compact 4.0
回顾例子中的代码(改用MVC描述):
public class LiangyichenDBContext : DbContext
{
public DbSet<LiangyichenDB> Items { get; set; }
}
public class LiangyichenDB
{
[Key]
public int index { get; set; }
public string title { get; set; }
public DateTime pubdate { get; set; }
}
public ActionResult Index()
{
var context = new LiangyichenDBContext();
context.Items.Add(new LiangyichenDB { title = "1", pubdate = DateTime.Now });
context.Items.Add(new LiangyichenDB { title = "2", pubdate = DateTime.Now });
context.Items.Add(new LiangyichenDB { title = "3", pubdate = DateTime.Now });
context.SaveChanges();
return View(context.Items);
}
@model IQueryable<codefirst_Migrations.Models.LiangyichenDB>
@{
Layout = null;
}<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@foreach (var i in Model)
{
<p>@i.title :@i.pubdate</p>
}
</div>
</body>
</html>
上例在 Visual Studio 2012 中调试通过。
首先我们一定要运行一次,确保生成了原始数据库(/app_data/Database.sdf)
下面我们开始更改数据库架构:
public class LiangyichenDB
{
[Key]
public int index { get; set; }
public string title { get; set; }
public DateTime pubdate { get; set; }
//增加一个字段
public string notes { get; set; }
}
4. 如何将参数传递给DbContext.Database.ExecuteSqlCommand方法
var firstName = "John";
var id = 12;
var sql = @"Update [User] SET FirstName = {0} WHERE Id = {1}";
ctx.Database.ExecuteSqlCommand(sql, firstName, id);
5. 一个数据库事务中可否包含两个不同的连接
就我的理解应该是不行的,这个很好说明,比如说在java中:数据库的事务是通过Connection对象的setAutoComit方法设置是否自动提交,comit方法提交事务,两个连接Connection对象就是两个事务了。不过在分布式事务中一个事务允许有多个连接,这个也比较好理解,因为分布式事务处理时不是在一台机器上面完成的,也许一台机器在北京,一台机器在上海,它们分别在各自的事务中完成的,但是整体算是一个事务(任何一个事务失败,整个事务就失败了)。
6. dbcontext savechanges 还有sql 能同步吗
var firstName = "John"; var id = 12; var sql = @"Update [User] SET FirstName = {0} WHERE Id = {1}"; ctx.Database.ExecuteSqlCommand(sql, firstName, id);
7. sqlsugar 怎么看生成的sql
public class DbContext{ public DbContext() { Db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = "server=.;uid=sa;pwd=sasa;database=SqlSugar4XTest", DbType = DbType.SqlServer, IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样我就不多解释了 //InitKey默认SystemTable }); } public SqlSugarClient Db;//用来处理事务多表查询和复杂的操作 public SimpleClient<Student> StudentDb { get { return new SimpleClient<Student>(Db); } }//用来处理Student表的常用操作 public SimpleClient<School> SchoolDb { get { return new SimpleClient<School>(Db); } }//用来处理School表的常用操作}
8. DbContext.Database.SqlQuery<TElement>怎么实现联表查询
现在我要执行一条联表查询SQL语句:
string sql = select pp.Id, pp.PlayerId, pp.NickName PetName, p.NickName PlayerName from player p, petPlayer pp where p.Id=pp.PlayerId and p.NickName='尤利娅';
我执行
var rs = myContext.Database.SqlQuery<Object>();
后不知道该怎么处理才能访问原表结构的相对应的字段值?请问我该怎么做?最好详细一点,我初学EF,谢谢!
说明:因为不知道DbContext.Database.SqlQuery<TElement>()的TElement该用什么类型代替,没办法就用了Object。
C# code
var query=from p in db.Player join pp in db.petPlayer on p.Id equals pp.PlayerId where p.NickName=="尤利娅" select new { pp.Id, pp.PlayerId, PetName=pp.NickName , PlayerName =p.NickName }; 返回的是匿名类
9. .net中一个方法要对多张表进行增加修改操作的时候,中途某一操作报错了,那怎么返回之前表的操作
这取决于你更新数据的方式,我是使用EF更新数据的
如果一次操作可能产生多条SQL语句,为防止中间部分SQL执行出错导致产生脏数据;会运用事务统一提交:
using(vardbContext=newDbContext())
using(vartrans=dbContext.Database.BeginTransaction(System.Data.IsolationLevel.ReadCommitted))
{
//数据更新。。。
dbContext.SaveChanges();//使用EF更新数据时要有这条语句
trans.Commit();//这条语句表示提交事务
}
事务就是用来保持数据一致性的
10. EF查询 linq写法 DbContext.DbSet<TEntity>
这两种都是直接查询数据库的,没有在内存中存储,
但要是这样两种都可以先把数据缓存到内存中再查:
List<BlogArt> ba=Db.BlogArt.toList();
ba.where(a => a.BlogCata_ID== 1)
var ls=
from a in Db.BlogArt.toList()
where a.BlogCata_ID==1
select a;