Entity Framework Code First 常用方法集成

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

using
System;

using
System.Collections.Generic;

using
System.Data.Entity;

using
System.Linq;

using
System.Linq.Expressions;

using
System.Text;

using
SnsDB;

using
EntityFramework.Extensions;

using
EntityFramework.Reflection;

using
System.Data.SqlClient;

using
System.Transactions;

namespace
SnsDAL

{

    public
partial class Repository

    {

        /// <summary>

        /// 创建一条记录

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="model"></param>

        /// <returns></returns>

        public
int Create<T>(T model) where
T : class

        {

            int
Result = 0;

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                db.Set<T>().Add(model);

                db.Configuration.ValidateOnSaveEnabled = false;

                Result = db.SaveChanges();

                db.Configuration.ValidateOnSaveEnabled = true;

                return
Result;

            }

        }

        /// <summary>

        /// 根据主键修改实体的全部信息

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="model"></param>

        /// <returns></returns>

        public
int Update<T>(T model) where
T : class

        {

            int
Result = 0;

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                if
(db.Entry<T>(model).State == EntityState.Detached)

                {

                    db.Set<T>().Attach(model);

                    db.Entry<T>(model).State = EntityState.Modified;

                }

                db.Configuration.ValidateOnSaveEnabled = false;

                Result = db.SaveChanges();

                db.Configuration.ValidateOnSaveEnabled = true;

                return
Result;

            }

        }

        /// <summary>

        /// 只删除一条记录

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="ids"></param>

        public
int Delete<T>(Expression<Func<T, bool>> express) where
T : class

        {

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                T model = db.Set<T>().SingleOrDefault(express);

                db.Set<T>().Remove(model);

                return
db.SaveChanges();

            }

        }

        /// <summary>

        /// 根据条件获取一个实体

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="express"></param>

        /// <returns></returns>

        public
T GetModel<T>(Expression<Func<T, bool>> express) where
T : class

        {

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                T model = db.Set<T>().SingleOrDefault(express);

                return
model;

            }

        }

        /// <summary>

        /// 根据条件获取列表

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="express"></param>

        /// <returns></returns>

        public
IEnumerable<T> GetList<T>(Expression<Func<T, bool>> express) where
T : class

        {

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                return
db.Set<T>().Where(express).ToList();

            }

        }

        /// <summary>

        /// 获取列表

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <returns></returns>

        public
IEnumerable<T> GetList<T>() where
T : class

        {

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                return
db.Set<T>().ToList();

            }

        }

        /// <summary>

        /// 批量删除

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="express"></param>

        /// <returns></returns>

        public
int DeleteRange<T>(Expression<Func<T, bool>> express) where
T : class

        {

            int
Result = 0;

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                db.Set<T>().Where(express).Delete();

                db.Configuration.ValidateOnSaveEnabled = false;

                Result = db.SaveChanges();

                db.Configuration.ValidateOnSaveEnabled = true;

            }

            return
Result;

        }

        /// <summary>

        /// 批量添加

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="List"></param>

        /// <returns></returns>

        public
int AddRange<T>(IList<T> List) where
T : class

        {

            int
Result = 0;

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                db.Set<T>().AddRange(List);

                db.Configuration.ValidateOnSaveEnabled = false;

                Result = db.SaveChanges();

                db.Configuration.ValidateOnSaveEnabled = true;

            }

            return
Result;

        }

        /// <summary>

        /// 批量修改  例:xx.update(p=>p.id==1,p=>new xx{p.name="修改"});

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="where">条件</param>

        /// <param name="updateExpression">修改的内容</param>

        /// <returns></returns>

        public
int UpdateRange<T>(Expression<Func<T, bool>> where, Expression<Func<T, T>> updateExpression) where
T : class

        {

            int
Result = 0;

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                using
(TransactionScope Transaction = new
TransactionScope())

                {

                    db.Configuration.ValidateOnSaveEnabled = false;

                    db.Set<T>().Update(where, updateExpression);

                    db.Configuration.ValidateOnSaveEnabled = true;

                    Transaction.Complete();

                    Result = 1;

                }

            }

            return
Result;

        }

        /// <summary>

        /// 执行一条sql返回list

        /// </summary>

        /// <typeparam name="T">一般为ViewModel</typeparam>

        /// <param name="strsql"></param>

        /// <returns></returns>

        public
IEnumerable<T> GetList<T>(string
strsql) where
T:class

        {

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                return
db.Database.SqlQuery<T>(strsql);

            }

        }

        /// <summary>

        /// 执行一条sql返回list

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="strsql">一般为ViewModel</param>

        /// <param name="paras">参数</param>

        /// <returns></returns>

        public
IEnumerable<T> GetList<T>(string
strsql, SqlParameter[] paras) where
T : class

        {

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                return
db.Database.SqlQuery<T>(strsql, paras);

            }

        }

        /// <summary>

        /// 执行一条sql返回一个对象

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="strsql"></param>

        /// <returns></returns>

        public
T GetList<T>(string
strsql) where
T : class

        {

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                return
db.Database.SqlQuery<T>(strsql).Cast<T>().First();

            }

        }

        /// <summary>

        /// 执行一条sql返回一个对象

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="strsql"></param>

        /// <param name="paras">参数</param>

        /// <returns></returns>

        public
T GetList<T>(string
strsql,SqlParameter[] paras) where
T : class

        {

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                return
db.Database.SqlQuery<T>(strsql,paras).Cast<T>().First();

            }

        }

        /// <summary>

        /// 执行一条sql,一般为添加或修改或删除操作

        /// </summary>

        /// <param name="strsql"></param>

        /// <returns>受影响的行数</returns>

        public
int ExecuteSqlCommand(string
strsql)

        {

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                return
db.Database.ExecuteSqlCommand(strsql);

            }

        }

        /// <summary>

        /// 执行一条sql,一般为添加或修改或删除操作

        /// </summary>

        /// <param name="strsql"></param>

        /// <param name="paras">参数</param>

        /// <returns></returns>

        public
int ExecuteSqlCommand(string
strsql,SqlParameter[] paras)

        {

            using
(SnsDB_Intermodal db = new
SnsDB_Intermodal())

            {

                return
db.Database.ExecuteSqlCommand(strsql,paras);

            }

        }

    }

}

  小人技术不才,以上仅提供参考。还希望大神多多指点。
    

      再次推荐一个  ASP.NET MVC群 
 171560784   
       
     

Entity Framework Code First 常用方法集成,布布扣,bubuko.com

时间: 2024-12-26 06:16:06

Entity Framework Code First 常用方法集成的相关文章

Entity Framework Code First (三)Data Annotations

Entity Framework Code First 利用一种被称为约定(Conventions)优于配置(Configuration)的编程模式允许你使用自己的 domain classes 来表示 EF 所依赖的模型去执行查询.更改追踪.以及更新功能,这意味着你的 domain classes 必须遵循 EF 所使用的约定.然而,如果你的 domain classes 不能遵循 EF 所使用的约定,此时你就需要有能力去增加一些配置使得你的 classes 能够满足 EF 所需要的信息. C

Entity Framework Code First数据库迁移(DB Migration)

一.手动迁移 第1步.启用数据库迁移 打开程序包管理器控制台 工具->库程序包管理器->程序包管理器控制台 打开控制台后,在控制台管理窗口输入 Enable-Migrations 指令,铵下回车键,到这里已启用了数据库迁移,但还没执行,结果如下图: 第2步.运行数据库迁移 在控制台管理窗口输入 Add-Migration指令,来新增一条数据库迁移版本,输入时必须要带上一个版本名称 Add-Migration AddProductCategoryTypeName,如下图: 运行完成后会在解决方案

Entity Framework Code First数据库连接

参考页面: http://www.yuanjiaocheng.net/entity/entitytypes.html http://www.yuanjiaocheng.net/entity/entity-relations.html http://www.yuanjiaocheng.net/entity/entity-lifecycle.html http://www.yuanjiaocheng.net/entity/code-first.html http://www.yuanjiaochen

Entity Framework Code First 映射继承关系

转载 http://www.th7.cn/Program/net/201301/122153.shtml Code First如何处理类之间的继承关系.Entity Framework Code First有三种处理类之间继承关系的方法,我们将逐一介绍这三种处理方法. 1.Table Per Hierarchy(TPH): 只建立一个表,把基类和子类中的所有属性都映射为表中的列. 2.Table Per Type(TPT): 为基类和每个子类建立一个表,每个与子类对应的表中只包含子类特有的属性对

Entity Framework Code First属性映射约定

参考页面: http://www.yuanjiaocheng.net/entity/code-first.html http://www.yuanjiaocheng.net/entity/mode-first.html http://www.yuanjiaocheng.net/entity/database-first.html http://www.yuanjiaocheng.net/entity/choose-development-approach.html http://www.yuan

Entity Framework Code First执行SQL语句、视图及存储过程

1.Entity Framework Code First查询表或视图 var provincelist = ctx.Provinces.SqlQuery("SELECT TOP 10 * FROM Province"); foreach (var province in provincelist) { Console.WriteLine("{0}-{1}-{2}", province.ProvinceID, province.ProvinceNo, provinc

ADO.NET Entity Framework -Code Fisrt 开篇(一)

ADO.NET Entity Framework -Code Fisrt 开篇(一) 2012-12-25 15:13 by 易code, 911 阅读, 0 评论, 收藏, 编辑 ADO.NET Entity Framework 是微软的一套实体映射框架.发布EF4.1(Entity Framework )时,又提出了代码先行的设计理念(the code comes first, the rest follows).具体好处哪是多多,查资料吧. 参考资料:Programming Entity

Entity Framework Code First (二)Custom Conventions

------------------------------------------------------------------------------------------------------------ 注意:以下所讨论的功能或 API 等只针对 Entity Framework 6 ,如果你使用早期版本,可能部分或全部功能不起作用! --------------------------------------------------------------------------

Entity Framework Code First关系映射约定

Entity Framework Code First关系映射约定 本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个不同表之间可以存在外键依赖关系,一个表自身也可以有自反关系(表中的一个字段引用主键,从而也是外键字段). Entity Framework Code First默认多重关系的一些约定规则: 一对多关系:两个类中分别包含一个引用和一个