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;