手动写Entity Framework 数据库上下文和Model实体
1、引用EF对应的程序集
使用命令安装EntityFramework包
Install-Package EntityFramework
Entity Framework简单目录:
1.context数据库上下文class:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Web; namespace ClothMvcApp.EF
{
public class ClothDBContext: DbContext, IDisposable
{
public ClothDBContext()
: base("name=ClothDBContext")
{
} protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
} public DbSet<News> News { get; set; }
public DbSet<Product> Product { get; set; }
public DbSet<SysUser> SysUser { get; set; } public DbSet<Brand> Brand { get; set; } public DbSet<ImageInfo> ImageInfo { get; set; } public DbSet<Contact> Contact { get; set; }
}
}
2.Model实体类:
添加所需程序集:
Install-Package System.ComponentModel.Annotations
如下图:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web; namespace ClothMvcApp.EF
{
[Table("Brand")]
public class Brand
{
[Column("Id")]
public Guid Id { get; set; } [Column("Content")]
public string Content { get; set; } [Column("Picture")]
public string Picture { get; set; } [Column("CreateTime")]
public DateTime CreateTime { get; set; }
}
}
有外键字段Model:
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; namespace Lemon.Media.Entities
{
/// <summary>
/// 渠道应用
/// </summary>
[Table("Channel_Apps")]
public class ChannelApp
{
[Key, Column("Id")]
public Guid Id { get; set; } /// <summary>
/// 渠道ID(主要指物业)
/// </summary>
[Column("ChannelId")]
public int ChannelId { get; set; } /// <summary>
/// 是否由H5承载实现
/// </summary>
[Column("IsH5")]
public bool IsH5 { get; set; } /// <summary>
/// App应用唯一标识
/// </summary>
[Column("AppKey")]
public string AppKey { get; set; } /// <summary>
/// 添加时间
/// </summary>
[Column("AddTime")]
public DateTime AddTime { get; set; } /// <summary>
/// 是否删除
/// </summary>
[Column("IsDel")]
public bool IsDel { get; set; } /// <summary>
/// 是否需要PPTV
/// </summary>
[Column("HasPPTV")]
public bool HasPPTV { get; set; } /// <summary>
/// 渠道
/// </summary>
[ForeignKey("ChannelId")]
public virtual Channel Channel { get; set; }
}
}
3.web.config 数据库连接字符串:
<connectionStrings> <add name="ClothDBContext" connectionString="Data Source=.;Initial Catalog=ClothDB;User ID=sa;Password=123456;Pooling=true;" providerName="System.Data.SqlClient" />
</connectionStrings>
4.简单的调用方式:
using (var context = new ClothDBEntities())
{
context.ImageInfo.Where(c => c.Cate == "banner").OrderByDescending(c => c.CreateTime).Take().ToList();
}
ps:卸载nuget包:
Uninstall-Package System.ComponentModel.Annotations
手动写Entity Framework 数据库上下文和Model实体的更多相关文章
- Entity Framework 数据库初始化四种策略
策略一:数据库不存在时重新创建数据库 Database.SetInitializer<testContext>(new CreateDatabaseIfNotExists<testC ...
- Entity Framework数据库初始化四种策略
策略一:数据库不存在时重新创建数据库 程序代码 Database.SetInitializer<testContext>(new CreateDatabaseIfNotExists< ...
- [Programming Entity Framework] 第3章 查询实体数据模型(EDM)(一)
http://www.cnblogs.com/sansi/archive/2012/10/18/2729337.html Programming Entity Framework 第二版翻译索引 你可 ...
- Entity Framework 数据库先行、模型先行、代码先行
数据库先行(Database First):基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件. 模型先 ...
- Entity Framework入门教程:创建实体数据模型
下图为一个已经创建好的数据库表关系 实体数据模型的创建过程 在Visual Studio项目中,右键程序集菜单,选择[添加]->[新建项],在[添加新项窗口]中选择[ADO.NET实体数据模型] ...
- Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源
熟悉Entity Framework应该对以下图片不陌生,他就是ADO.NET实体数据模型向导:可以将数据库的表自动生成模型类,或者创建Code First的模型文件. 但是这个模型向导默认只显示微软 ...
- Entity framework 加载多层相关实体数据
Entity framework有3种加载数据的方式:懒汉式(Lazy loading),饿汉式(Eager loading),显示加载(Explicit loading).3种加载方式有各自的优缺点 ...
- Mysql 该如何 Entity Framework 数据库迁移 和 如何更好的支持EntityFramework.Extended
问题 1.在使用EntityFramework访问Mysql的时候,使用迁移来生成数据库或者更新数据库时候会遇到一些问题 2.EntityFramework.Extended对Mysql的支持不是很完 ...
- Entity FrameWork Code First 之Model分离
之前一直用DB First新建类库进行使用,最近开始研究Code First.Code First也可以将Model新建在类库里面,然后通过数据迁移等操作生成数据库. 现在说下主要步骤: 1.新建类库 ...
随机推荐
- mysql 远程连接 10038
1,先确认本地是否能连上本地能连上就对用户进行授权 mysql>grant all privileges on *.* to 'root'@'%' identified by 'youpassw ...
- Could not install the app on the device, read the error above for details. Make sure you have an Android emulator running or a device connected and have set up your Android development environment:
Administrator@DESKTOP-EHCTIOR MINGW64 /d/react-native-eyepetizer (master) $ react-native run-android ...
- react-native中的图片
静态图片资源 React Native 提供了一个统一的方式来管理 iOS 和 Android 应用中的图片.要往 App 中添加一个静态图片, 只需把图片文件放在代码文件夹中某处,然后像下面这样去引 ...
- plink: 等位型计数(allele count)
对genotype的等位型进行计数,需要用到以下参数: --freq Allele frequencies--counts Modifies --freq to report actual allel ...
- spring MVC 如何接收前台传入的JSON对象数组并处理
spring MVC 如何接收前台传入的JSON对象数组 主要方法: (主要用到的包是 net.sf.json 即:json-lib-2.3-jdk15.jar 完整相关jar包: commons- ...
- CSUST 1011 神秘群岛 (Dijkstra+LCA)
神秘群岛 Description 小J继续着周游世界的旅程,这次他来到了一个神奇的群岛.这片群岛有n个岛屿,同时这些岛屿被标上了1-n的编号. 每个岛屿上面都有神奇的传送门,传送门可以把小J从当前 ...
- jQuery中mouseleave和mouseout的区别详解
很多人在使用jQuery实现鼠标悬停效果时,一般都会用到mouseover和mouseout这对事件.而在实现过程中,可能会出现一些不理想的状况. 先看下使用mouseout的效果: <p> ...
- 解决mysql乱码问题
在mysql根目录下创建my.ini文件 my.ini内容为: [mysqld] # 设置默认字符集,只会影响新建数据库的默认字符集 character-set-server=utf8
- nginx + php + mysql安装、配置、自启动+redis扩展
用过了apache就想着用用nginx,网上教程其实很多,但是受服务器版本等限制,每个人遇到的问题也不一样,先记录下我的 一.安装依赖 yum -y install gcc zlib zlib-dev ...
- go kafka
安装导入 go get github.com/Shopify/sarama import "github.com/Shopify/sarama" 使用 1.同步生产者 packag ...