簡體   English   中英

如何在C#中不使用Edmx時使用DbContext?

[英]How to use DbContext without using Edmx in C#?

我們可以DbContext沒有在項目中添加EDMX的情況下使用DbContext數據模型這里是示例代碼,其中我試圖在ContextManager的幫助下保存Instance類對象,這是DbContext

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Core.Objects.DataClasses;
using System.Linq;
using System.Text;

namespace DbContext_test
{
    public class ContextManager : DbContext
    {
        public ContextManager(string connstring)
            : base(connstring)
        {
        }

        public override int SaveChanges()
        {
            //TODO: Write code before saving dataEntity object or fire some event to do so.
            return base.SaveChanges();
        }
    }

    public class Instances : EntityObject
    {
        public int ID { get; set; }
        public string InstanceCode { get; set; }
        public string InstanceName { get; set; }
    }

    public class InstanceManager
    {
        readonly string ConnectionString;

        public InstanceManager(string connString)
        {
            ConnectionString = connString;
        }
        public void SaveInstance(int id, string instanceCode, string instanceName)
        {
            SaveInstanceInternal(new Instances { ID = id, InstanceCode = instanceCode, InstanceName = instanceName });
        }

        public void SaveInstance(Instances instance)
        {
            SaveInstanceInternal(instance);
        }

        private void SaveInstanceInternal(Instances instance)
        {
            var contextManager = new ContextManager(ConnectionString);

            contextManager.Entry(instance);
            contextManager.SaveChanges();
        }
    }
}

您可以使用代碼優先方法而不是edmx方法來實現。

http://www.entityframeworktutorial.net/code-first/what-is-code-first.aspx

按照這個

1)創建上下文類

 public class SchoolPlusDBContext : DbContext
{
    public SchoolPlusDBContext()
        : base("name=SchoolPlusDBContext")
    {

    }


    public DbSet<CategoryMaster> CategoryMaster { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        base.OnModelCreating(modelBuilder);
    } 

}

2)創建課程

public class CategoryMaster
{
   [Key]
    public long CategoryID { get; set; }
   [Required]
    public string CategoryName { get; set; }
     [Required]
    public string CategoryType { get; set; }

}

3)DA用於查詢執行

 public class CategoryDA
{

    SchoolPlusDBContext dbContext = new SchoolPlusDBContext();

    public List<CategoryMaster> GetAllCategory()
    {
        return dbContext.CategoryMaster.OrderByDescending(t => t.CategoryID).ToList();
    }

    public bool AddCategory(CategoryMaster master,string UserName)
    {
        try
        {
            master.CreatedBy = UserName;
            master.CreatedOn = System.DateTime.Now;

            dbContext.CategoryMaster.Add(master);
            dbContext.SaveChanges();
        }
        catch
        {
            return false;
        }
        return true;
    }


}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM