给一个Entity的字段付初始化值(C#)

给一个类去分别赋值,是一个很繁琐切无趣的工作。

那我们就想办法给你一个类去初始化,或许不是一个很效率的方法,但是,从可修改的角度讲,却是一个非常不错的方式。

具体的想法就是,利用类的属性,取出所有的字段,然后,根据字段的类型来初始化不同的字段。

/// <summary>
/// エンティティのnull項目が初期化する
/// 数字の項目:ゼロ
/// 文字列の項目:空白
/// ★値があるの項目はそのままにする
/// </summary>
/// <typeparam name="T">タイプ</typeparam>
/// <param name="entity">エンティティ</param>
/// <returns>初期化結果</returns>
public static T InitEntityValue<T>(T entity)
{
if (entity == null)
{
// ヌルの場合、対象インスタンスを作成する
entity = (T)Activator.CreateInstance(typeof(T));
}

var type = entity.GetType();

var items = type.GetProperties();
foreach (var item in items)
{
if (item.GetValue(entity, null) != null)
{
continue;
}

if (typeof(string).Equals(item.PropertyType))
{
item.SetValue(entity, string.Empty, null);
}
else if (typeof(bool).Equals(item.PropertyType))
{
item.SetValue(entity, false, null);
}
else if (typeof(int).Equals(item.PropertyType))
{
item.SetValue(entity, 0, null);
}
else if (typeof(long).Equals(item.PropertyType))
{
item.SetValue(entity, 0L, null);
}
else if (typeof(float).Equals(item.PropertyType))
{
item.SetValue(entity, 0F, null);
}
else if (typeof(double).Equals(item.PropertyType))
{
item.SetValue(entity, 0D, null);
}
else if (typeof(decimal).Equals(item.PropertyType))
{
item.SetValue(entity, decimal.Zero, null);
}
else if (typeof(int?).Equals(item.PropertyType))
{
item.SetValue(entity, 0, null);
}
else if (typeof(long?).Equals(item.PropertyType))
{
item.SetValue(entity, 0L, null);
}
else if (typeof(float?).Equals(item.PropertyType))
{
item.SetValue(entity, 0F, null);
}
else if (typeof(double?).Equals(item.PropertyType))
{
item.SetValue(entity, 0D, null);
}
else if (typeof(decimal?).Equals(item.PropertyType))
{
item.SetValue(entity, decimal.Zero, null);
}
else if (typeof(Nullable<int>).Equals(item.PropertyType))
{
item.SetValue(entity, 0, null);
}
else if (typeof(Nullable<long>).Equals(item.PropertyType))
{
item.SetValue(entity, 0L, null);
}
else if (typeof(Nullable<float>).Equals(item.PropertyType))
{
item.SetValue(entity, 0F, null);
}
else if (typeof(Nullable<double>).Equals(item.PropertyType))
{
item.SetValue(entity, 0D, null);
}
else if (typeof(Nullable<decimal>).Equals(item.PropertyType))
{
item.SetValue(entity, decimal.Zero, null);
}
else
{
item.SetValue(entity, InitEntityValue(item.GetValue(entity, null)), null);
}
}

return entity;
}

给一个Entity的字段付初始化值(C#)

时间: 2024-08-07 06:14:23

给一个Entity的字段付初始化值(C#)的相关文章

利用Entity Framework修改指定字段中的值

利用Entity Framework修改指定字段中的值一般我们编辑某些模型的时候会用到类似这样的代码: [HttpPost] public ActionResult Edit(Article model) { if (model.Id == 0) { return HttpNotFound(); } using (db) { db.Entry(model).State = EntityState.Modified; db.SaveChanges(); } return RedirectToAct

类的初始化块,构造方法与字段的初始值

1 public class Test2 { 2 { //类的初始化块 3 field=200; 4 } 5 public int field=100; //字段的初始值 6 public Test2(int value) { //类的构造方法 7 this.field=value; 8 } 9 10 public Test2(){ 11 12 } 13 public static void main(String[] args) { 14 Test2 obj=new Test2(); //调用

SQL语句:一个表,通过一个字段查找另外一个字段不相同值

select * from [dbo].[Sys_MemberKey] a where exists(select * from [Sys_MemberKey] b where a.FMachineCode<>'' and a.FKeyID=b.FKeyID and a.FMemberID<>b.FMemberID) 一个相同的表根据一个字段,查找另外一个字段不相同值,经测试可用

mysql将一个表中字段A的值赋给另一个表的字段B

# mysql 的修改方法 update table_a a inner join table_b b on b.id=a.id set a.description=b.content; # mssql的修改方法 update b set a.description=b.content from table_a a inner join table_b b on a.id=b.id; mysql将一个表中字段A的值赋给另一个表的字段B

Java 虚拟机内部类静态字段的初始化与访问

要明白 Java 虚拟机如何访问类的静态变量,首先要明白下面几个问题: 虚拟机内部是如何表示一个 Java 类的 静态变量存储在哪里 虚拟机如何访问到这些静态变量 这篇文章也从这围绕这三个问题展开,并结合 OpenJDK 中 HotSpot 的源代码作分析. Java 虚拟机内部如何表示类 HotSpot 虚拟机在内部使用两组类来表示 Java 的类和对象 OOP(ordinary object pointer),用来描述对象实例信息 Klass,用来描述Java类,是虚拟机内部Java类的对等

数据库新建数值型字段,初始化 @Column注解

当新添加数值型字段时,数据库默认字段值为 null.这样当访问有此字段的页面就会报空指针错误,例如:严重 [http-nio-80-exec-11] org.apache.catalina.core.ApplicationDispatcher.invoke Servlet.service() for servlet jsp threw exception 解决方案: 此种错误是由于jsp页面获得了一个空指针导致,即servlet传参数时有一个参数没穿过去或者传的参数和接受的参数不一致导致的,检查

提取数据库字段里面的值,并改变+图片懒加载,jquery延迟加载

要求:手机端打开某个页面的详细信息,因为网速或者别的原因,响应太慢,因为图片大的原因,希望先进来,图片在网页运行的情况再慢慢加载(jquer延迟加载) http://www.w3cways.com/1765.html()  困难:因为页面的图片是用编辑器加进去的        :图片与文字存到数据库的字段中 :实现思路:从数据库中读取这个字段,把字段里面的src替换成lazyload 然后再返回给页面 这里主要讲是怎么把从数据库取到的数据里面的字段里面的值替换然后与页面直接的数据转换 首先 pu

ZeroMQ接口函数之 :zmq_msg_init_size - 使用一个指定的空间大小初始化ZMQ消息对象

ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_init_size zmq_msg_init_size(3) ØMQ Manual - ØMQ/3.2.5 Name zmq_msg_init_size - 使用一个指定的空间大小初始化ZMQ消息对象 Synopsis int zmq_msg_init_size (zmq_msg_t *msg, size_t size); Description zmq_msg_init_size()函数会分配任何被请

[C++基础]一个比较常用的配置文件/初始化文件读取程序

在编程中,我们经常会遇到一些配置文件或初始化文件.这些文件通常后缀名为.ini或者.conf,可以直接用记事本打开.里面会存储一些程序参数,在程序中直接读取使用.例如,计算机与服务器通信,服务器的ip地址,段口号可以存储于ini文件中.这样如果我想换另外一台服务器时,直接将ini文件中的ip地址改变即可,程序源代码不需要做任何修改. 本文将分享一段常用代码,用于读取配置文件中的信息.本文中的代码为C语言编写,在ubuntu 12.04 linux系统中调试没有问题.具体操作如下: 1. 首先用记