1. 程式人生 > 實用技巧 >EntityFramework初入

EntityFramework初入

//NuGet包管理,搜尋引入 EntityFramework6 、Newtonsoft
//使用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.Entity;
using System.Data.SqlClient;
using System.Configuration;
using Newtonsoft.Json;
namespace EF_Test
{
class Program { static void Main(string[] args) { try { TestContext testContext = new TestContext(); var personList = testContext.TestTables.AsNoTracking().ToList(); Console.WriteLine(JsonConvert.SerializeObject( personList)); //通過DBContext.Database,不需要建立對應Entity,可建立sqlconnection,sql語句返回DataTable //DataTable dddd = SqlQueryForDataTatable(testContext.Database, "select * from TestTable");
//if (dddd.Rows.Count > 0) //{ // Console.WriteLine(dddd.Rows[0]["AAAA"].ToString()); //} //Console.WriteLine("END"); } catch (Exception exc) { Console.WriteLine(exc.Message); } Console.Read(); } public static DataTable SqlQueryForDataTatable(Database db,string sql) { SqlConnection conn = (SqlConnection)db.Connection; SqlCommand cmd
= new SqlCommand(); cmd.Connection = conn; cmd.CommandText = sql; SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable table = new DataTable(); adapter.Fill(table); conn.Close();//連線需要關閉 conn.Dispose(); return table; } } //直接借鑑網上程式碼 public class TestContext : DbContext { private static TestContext _instance; public static TestContext Instance { get { if (_instance == null) { _instance = new TestContext(); } return _instance; } } private string _connectionString; public string ConnectionString { get { if (string.IsNullOrWhiteSpace(_connectionString)) { _connectionString = ConfigurationManager.ConnectionStrings["MyDbContext"].ConnectionString; } return _connectionString; } set { _connectionString = value; } } public TestContext() : base("MyDbContext") { //DBContext直接根據MyDbContext鍵值去config中讀取對應的value並建立連結 } public TestContext(string connectionString) : base(connectionString) { } /// <summary> /// 定義的實體 /// </summary> public DbSet<TestTable> TestTables { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { //表名對映 base.OnModelCreating(modelBuilder); modelBuilder.Types().Configure(t => { //獲取類名 var tableName = t.ClrType.Name; //將類名處理為指定規範表名 tableName = tableName.Replace("Entity", ""); t.ToTable(tableName); }); } } //對應表已在資料庫中建立 public class TestTable { public int id { get; set; } public string AAAA { get; set; } public string BBBB { get; set; } } }