遇到的一个问题 不知道是不是我代码的原因

foming 发布于 2016/09/22 10:46
阅读 1K+
收藏 0
private static void ADD(Names name)
      {

          int count =DB.Context.Insert<Names>(name);
          Console.WriteLine(count.ToString());

}

Model.Names names = new Names();                          names.Name = "徐三加徐四";             ADD(names);

Names 是我自己测试的一个表,里面就一个names 字段和一个 自增的主键id,

用这个insert 方法, 我是先声明了这个实体, 然后传递进去, 实例化的实话,主键为0了,然后就会报错,

虽然说可以用sql语句来代替,但是我想知道 有没有什么方法能够避免以下



加载中
0
foming
foming

这个 原因是 因为 最后我的 public readonly static Field Name = new Field("name", "names", "姓名");

name 首字母不是大写, 但是我tool 勾选了 首字母大写,改成大写以后 就可以了,我也是不太明白,问题到底在哪里.


0
zhangyoucai
zhangyoucai

你的model类里面如果某个字段是自增量你需要在字段前加上这句就ok了 例如以下例子

 [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

 public int Id { get; set; }

0
foming
foming
//------------------------------------------------------------------------------
// <auto-generated>
//     此代码由工具生成。
//     运行时版本:4.0.30319.18408
//     Website: http://ITdos.com/Dos/ORM/Index.html
//     对此文件的更改可能会导致不正确的行为,并且如果
//     重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------


using System;
using Dos.ORM;


namespace Model
{
    /// <summary>
    /// 实体类Names。(属性说明自动提取数据库字段的描述信息)
    /// </summary>
    [Table("names")]
    [Serializable]
    public partial class Names : Entity
    {
        #region Model
        private int _ID;
        private string _Name;


        /// <summary>
        /// 编号
        /// </summary>
        [Field("ID")]
        public int ID
        {
            get { return _ID; }
            set
            {
                this.OnPropertyValueChange("ID");
                this._ID = value;
            }
        }
        /// <summary>
        /// 姓名
        /// </summary>
        [Field("name")]
        public string Name
        {
            get { return _Name; }
            set
            {
                this.OnPropertyValueChange("Name");
                this._Name = value;
            }
        }
        #endregion


        #region Method
        /// <summary>
        /// 获取实体中的主键列
        /// </summary>
        public override Field[] GetPrimaryKeyFields()
        {
            return new Field[] {
_.ID,
};
        }
        /// <summary>
        /// 获取实体中的标识列
        /// </summary>
        public override Field GetIdentityField()
        {
            return _.ID;
        }
        /// <summary>
        /// 获取列信息
        /// </summary>
        public override Field[] GetFields()
        {
            return new Field[] {
_.ID,
_.Name,
};
        }
        /// <summary>
        /// 获取值信息
        /// </summary>
        public override object[] GetValues()
        {
            return new object[] {
this._ID,
this._Name,
};
        }
        /// <summary>
        /// 是否是v1.10.5.6及以上版本实体。
        /// </summary>
        /// <returns></returns>
        public override bool V1_10_5_6_Plus()
        {
            return true;
        }
        #endregion


        #region _Field
        /// <summary>
        /// 字段信息
        /// </summary>
        public class _
        {
            /// <summary>
            /// * 
            /// </summary>
            public readonly static Field All = new Field("*", "names");
            /// <summary>
            /// 编号
            /// </summary>
            public readonly static Field ID = new Field("ID", "names", "编号");
            /// <summary>
            /// 姓名
            /// </summary>
            public readonly static Field Name = new Field("name", "names", "姓名");
        }
        #endregion
    }
}
0
ITdos
ITdos
应该是实体的问题,实体应该生成一个函数获取自增字段,可能这个函数没生成出来。
foming
foming
回复 @ITdos : 生成不出来 ,直接报错了 ,是不是因为我在控制台运行的..
ITdos
ITdos
回复 @foming : 看下最终生成的sql是什么
foming
foming
- - 这个也是在你开源里面找的orm.tool 生成的
返回顶部
顶部