DbObjectModel <T> 使用问题

Nov 21, 2010 at 3:09 AM

你好!

本人是第一次使用DbEntry.Net

在定义Model时,继承DbOjbectModel<T>,如果定义的属性中存在值类型的的,则在调用.New创建实例对象时有异常,提示Don't set AllowNull to a value type field, instead of to use nullable,Model定义如下:

    public abstract class ManagerInfo : DbObjectModel<ManagerInfo>    {       
        /// <summary>        /// 登录帐号        /// </summary>
        [Length(60)]                 public abstract string LoginName { get; set; }
        /// <summary>        /// 登录蜜码        /// </summary>
        [Length(60)]                 public abstract string LoginPassword { get; set; }
        /// <summary>        /// 登录密码密钥        /// </summary>
        [Length(20)]                 public abstract string PasswordKey { get; set; }
        /// <summary>        /// 真实姓名        /// </summary>
        [Length(20)]                 public abstract string RealName { get; set; }
        /// <summary>        ///         /// </summary>
        [Length(100)]                 public abstract string Email { get; set; }
        /// <summary>        /// 电话        /// </summary>
        [Length(60)]                 public abstract string Phone { get; set; }
        /// <summary>        /// 手机        /// </summary>
        [Length(60)]                 public abstract string Mobile { get; set; }
        /// <summary>        /// 登录Ip        /// </summary>
        [Length(20)]                 public abstract string LoginIP { get; set; }
        /// <summary>        /// 最后登录时间        /// </summary>        public abstract System.DateTime? LastLoginDate { get; set; }
        /// <summary>        /// 当前登录时间        /// </summary>
        public abstract System.DateTime? CurrentLoginDate { get; set; }
        /// <summary>        /// 创建时间        /// </summary>        [SpecialName]        [AllowNull]        public abstract DateTime CreatedOn { get; set; }
        /// <summary>        /// 更新时间        /// </summary>        [SpecialName]        [AllowNull]        public abstract DateTime UpdatedOn { get; set; }

}

有CreatedOn和UpdatedOn则有异常,

难道只能定义成 

 [SpecialName]        [AllowNull]        public abstract DateTime? CreatedOn { get; set; }
 [SpecialName]        [AllowNull]        public abstract DateTime? UpdatedOn { get; set; }

这样吗?这样感觉总是不怎么好,有没有其它方法可以解决?,如不这样定义,则写Init()方法,可是每次都需要给所有属性值,太麻烦了

 

如有知道的解决方法的朋友,也请告知!!

谢谢!!

Coordinator
Nov 21, 2010 at 3:59 AM

Don't set AllowNull to a value type field, instead of to use nullable 这句话的意思是,不要对值类型设置AllowNull,而应该用Nullable。

如果还是不理解,可以用Tools里的SqlQuerier对现有数据库表生成一下Model,看看是什么样的。

Nov 21, 2010 at 6:06 AM

明白,

你的意思是定义成:

public abstract bool? IsDeleted { get; set; }

另再请教个问题

 

我看过你写的wiki的一个项目,里面的操作方法都是静态的,一般做正式的项目也这样吗?

什么情况下用静态方法呢?一直以来对应该用静态方法还是实例方法不是很明白,麻烦你了,谢谢!!

Coordinator
Nov 21, 2010 at 11:34 AM

其实我的意思是,提示信息已经说明了该怎么做,所以,遇到异常提示,应该先阅读一下。

Model中很多方法是静态的,但不是全部,一般做正式项目也这样。

使用了实例变量的或者需要可以被子类重写的,用实例方法,否则,用静态方法。