示例#1
0
        private void button4_Click(object sender, EventArgs e)
        {
            using (var db = new  Repository.SqliteDbContext())
            {
                Models.Accounts Root = new Models.Accounts();

                Root.AccountName  = "成本科目清单";
                Root.AccountLevel = 0;
                Root.Level        = 0;
                Root.Name         = "根节点";
                Root.Order        = 0;

                Root.Child = new List <Models.Tree>();
                Models.ExpenseAccounts ea = new Models.ExpenseAccounts();
                ea.Name          = "费用1";
                ea.PricingComent = "输入收费说明";
                ea.Level         = 1;
                ea.Order         = 0;
                Root.Child.Add(ea);

                ea.Child = new List <Models.Tree>();
                Models.Accounts ac = new Models.Accounts();
                ac.Name        = "费用1-科目1";
                ac.AccountName = "科目";
                ac.Level       = 2;
                ac.Order       = 0;
                ea.Child.Add(ac);

                var _account = db.Set <Models.Accounts>();
                _account.Add(Root);

                db.SaveChanges();
            }
        }
示例#2
0
        private void onDataDelete(Repository.SqliteDbContext db, DataTable btDT, DataTable itDT)
        {
            //删除子表

            var itDTc = itDT.GetChanges(DataRowState.Deleted);

            if (itDTc != null)
            {
                var items = db.Set <Models.TypeItem>();
                foreach (System.Data.DataRow r in itDTc.Rows)
                {
                    int?changeid = r.Field <int>(0, DataRowVersion.Original);
                    var i        = items.ToList().Find(x => x.Id == changeid);

                    items.Attach(i);
                    items.Remove(i);
                }
            }

            //删主表
            var btDTc = btDT.GetChanges(DataRowState.Deleted);

            if (btDTc != null)
            {
                var types = db.Set <Models.BaseType>();
                foreach (System.Data.DataRow r in btDTc.Rows)
                {
                    int?changeid = r.Field <int>(0, DataRowVersion.Original);
                    #region  除
                    //删除明细
                    var _base = types.Include(b => b.HaveItem)
                                .Where(x => x.Id == changeid)
                                .ToList().FirstOrDefault();

                    if (_base != null && _base.HaveItem != null)
                    {
                        db.RemoveRange(_base.HaveItem);
                    }

                    if (db.ChangeTracker != null)
                    {
                        var a = db.ChangeTracker.Entries <Models.BaseType>()
                                .Where(x => x.Entity.Id == changeid).FirstOrDefault().Entity;

                        types.Attach(a);
                        types.Remove(a);
                    }
                    #endregion
                }
            }
        }
示例#3
0
        private void onDataModify(Repository.SqliteDbContext db, DataTable btDT, DataTable itDT)
        {
            //修改子表
            var itDTc = itDT.GetChanges(DataRowState.Modified);

            if (itDTc != null)
            {
                var items = db.Set <Models.TypeItem>();
                foreach (System.Data.DataRow r in itDTc.Rows)
                {
                    int?changeid = r.Field <int>(0, DataRowVersion.Original);
                    var i        = items.ToList().Find(x => x.Id == changeid);

                    var changeitem = items.Attach(i);
                    changeitem.Entity.ItemName      = r.Field <String>(2);
                    changeitem.Entity.ItemValue     = r.Field <String>(3);
                    changeitem.Entity.ItemValueType = r.Field <String>(4);
                    changeitem.Entity.Comment       = r.Field <String>(5);
                    changeitem.Entity.ItemOrder     = r.Field <int>(6);
                    changeitem.Entity.Enable        = DBNull.Value.Equals(r[7]) ? false : r.Field <Boolean>(7);
                    changeitem.Entity.Modifier      = r.Field <String>(10);
                    changeitem.Entity.ModifyDate    = DBNull.Value.Equals(r[11]) ? System.DateTime.Now : r.Field <DateTime>(11);
                }
            }

            //修改主表
            var btDTc = btDT.GetChanges(DataRowState.Modified);

            if (btDTc != null)
            {
                var types = db.Set <Models.BaseType>();
                foreach (System.Data.DataRow r in btDTc.Rows)
                {
                    int?changeid = r.Field <int>(0, DataRowVersion.Original);
                    var i        = types.ToList().Find(x => x.Id == changeid);

                    var b = db.Attach(i);
                    b.Entity.BaseTypeName = r.Field <String>(1);
                    b.Entity.Comment      = r.Field <String>(2);
                    b.Entity.TypeOrder    = r.Field <int>(3);
                    b.Entity.Enable       = DBNull.Value.Equals(r[4]) ? false : r.Field <Boolean>(4);
                    b.Entity.Modifier     = r.Field <String>(7);
                    b.Entity.ModifyDate   = DBNull.Value.Equals(r[8]) ? System.DateTime.Now : r.Field <DateTime>(8);
                }
            }
        }
示例#4
0
        //保存数据
        public void ChangeGridData( )
        {
            var ds   = (DataSet)((BindingSource)(dataGridView1.DataSource)).DataSource;
            var bdt  = ds.Tables["BaseType"];
            var idt  = ds.Tables["ItemType"];
            var idts = ds.Relations[0];

            /**
             *  删除              修改              新增
             * 1.删除子表       1.修改子表       1.新增主表
             * 2.删除主表       2.修改主表       2.新增子表
             */
            using (var db = new Repository.SqliteDbContext())
            {
                onDataDelete(db, bdt, idt);
                onDataModify(db, bdt, idt);
                onDataAdd(db, bdt, idt, idts);
                db.SaveChanges();
            }
            ds.AcceptChanges();
            initGridView();
        }
示例#5
0
 public AccountServices()
 {
     _dbContext = new Repository.SqliteDbContext();
 }
示例#6
0
 public TypeItemServices()
 {
     _dbContext = new Repository.SqliteDbContext();
 }
示例#7
0
 public BaseTypeServices()
 {
     _dbContext = new Repository.SqliteDbContext();
 }
示例#8
0
        public void initGridView()
        {
            dataGridView1.DataSource = null;
            dataGridView2.DataSource = null;

            using (var db = new Repository.SqliteDbContext())
            {
                var _BaseTypes = db.Set <Models.BaseType>();
                var dl         = from bt in _BaseTypes.AsEnumerable()
                                 orderby bt.TypeOrder
                                 select new
                {
                    basetypeid = bt.Id,
                    项目名称       = bt.BaseTypeName,
                    备注         = bt.Comment,
                    顺序         = bt.TypeOrder,
                    状态         = bt.Enable,
                    创建人        = bt.Creator,
                    创建时间       = bt.CreateDate,
                    修改人        = bt.Modifier,
                    修改时间       = bt.ModifyDate
                };

                if (dl != null && dl.Count() > 0)
                {
                    maxtypeid = dl.Max(x => x.basetypeid);
                }



                var il = from i in _BaseTypes.SelectMany(x => x.HaveItem).AsEnumerable()
                         orderby i.ItemParent.TypeOrder, i.ItemOrder
                    select new
                {
                    ItemId   = i.Id,
                    ParentId = i.ItemParent.Id,
                    值名称      = i.ItemName,
                    值        = i.ItemValue,
                    值类型      = i.ItemValueType,
                    备注       = i.Comment,
                    顺序       = i.ItemOrder,
                    状态       = i.Enable,
                    创建人      = i.Creator,
                    创建时间     = i.CreateDate,
                    修改人      = i.Modifier,
                    修改时间     = i.ModifyDate
                };

                if (il != null && il.Count() > 0)
                {
                    maxitemid = il.Max(x => x.ItemId);
                }

                var tblDataSet  = new DataSet();
                var tblBaseType = dl.CopyToDataTable();
                tblBaseType.TableName = "BaseType";
                var tblItemType = il.CopyToDataTable();
                tblItemType.TableName = "ItemType";


                tblDataSet.Tables.Add(tblBaseType);
                tblDataSet.Tables.Add(tblItemType);

                tblDataSet.Relations.Add("BaseItemRelation",
                                         tblBaseType.Columns["basetypeid"], tblItemType.Columns["ParentId"]);


                BindingSource bsBaseType = new BindingSource();
                bsBaseType.DataSource = tblDataSet;
                bsBaseType.DataMember = "BaseType";


                BindingSource bsItemType = new BindingSource();
                bsItemType.DataSource = bsBaseType;
                bsItemType.DataMember = "BaseItemRelation";


                dataGridView1.DataSource         = bsBaseType;
                dataGridView1.Columns[0].Visible = false;

                dataGridView2.DataSource         = bsItemType;
                dataGridView2.Columns[0].Visible = false;
                dataGridView2.Columns[1].Visible = false;
            }
        }
示例#9
0
        private void onDataAdd(Repository.SqliteDbContext db, DataTable btDT, DataTable itDT, DataRelation drc)
        {
            //新增主表
            // var btDTc = btDT.GetChanges(DataRowState.Added);
            var btDTc = drc.ParentTable;//.GetChanges(DataRowState.Added);

            if (btDTc != null)
            {
                var types = db.Set <Models.BaseType>();
                foreach (System.Data.DataRow r in btDTc.Rows)
                {
                    if (r.RowState != DataRowState.Added)
                    {
                        continue;
                    }

                    var newbasetype = new Models.BaseType();
                    newbasetype.BaseTypeName = r.Field <String>(1);
                    newbasetype.Comment      = r.Field <String>(2);
                    newbasetype.TypeOrder    = DBNull.Value.Equals(r[3]) ? 0 : r.Field <int>(3);
                    newbasetype.Enable       = DBNull.Value.Equals(r[4]) ? false : r.Field <Boolean>(4);
                    newbasetype.Creator      = r.Field <String>(5);
                    newbasetype.CreateDate   = DBNull.Value.Equals(r[6]) ? System.DateTime.Now : r.Field <DateTime>(6);
                    newbasetype.Modifier     = r.Field <String>(7);
                    newbasetype.ModifyDate   = DBNull.Value.Equals(r[8]) ? System.DateTime.Now : r.Field <DateTime>(8);


                    var childrows = r.GetChildRows("BaseItemRelation");
                    foreach (DataRow cr in childrows)
                    {
                        var newitem = new Models.TypeItem();
                        newitem.ItemName      = cr.Field <String>(2);
                        newitem.ItemValue     = cr.Field <String>(3);
                        newitem.ItemValueType = cr.Field <String>(4);
                        newitem.Comment       = cr.Field <String>(5);
                        newitem.ItemOrder     = DBNull.Value.Equals(cr[6]) ? 0 : cr.Field <int>(6);
                        newitem.Enable        = DBNull.Value.Equals(cr[7]) ? false : cr.Field <Boolean>(7);
                        newitem.Creator       = cr.Field <String>(8);
                        newitem.CreateDate    = DBNull.Value.Equals(cr[9]) ? System.DateTime.Now : cr.Field <DateTime>(9);
                        newitem.Modifier      = cr.Field <String>(10);
                        newitem.ModifyDate    = DBNull.Value.Equals(cr[11]) ? System.DateTime.Now : cr.Field <DateTime>(11);
                        if (newbasetype.HaveItem == null)
                        {
                            newbasetype.HaveItem = new List <Models.TypeItem>();
                        }

                        newbasetype.HaveItem.Add(newitem);
                    }

                    types.Add(newbasetype);
                }
            }


            //新增子表
            var itDTc = itDT.GetChanges(DataRowState.Added);

            if (itDTc != null)
            {
                var items = db.Set <Models.TypeItem>();
                foreach (System.Data.DataRow r in itDTc.Rows)
                {
                    if (DBNull.Value.Equals(r[1]))
                    {
                        continue;
                    }

                    int basetypeid = r.Field <int>(1);
                    var b          = db.Set <Models.BaseType>()
                                     .Include(i => i.HaveItem)
                                     .Where(x => x.Id == basetypeid)
                                     .FirstOrDefault();

                    if (b != null)
                    {
                        var newitem = new Models.TypeItem();
                        newitem.ItemName      = r.Field <String>(2);
                        newitem.ItemValue     = r.Field <String>(3);
                        newitem.ItemValueType = r.Field <String>(4);
                        newitem.Comment       = r.Field <String>(5);
                        newitem.ItemOrder     = DBNull.Value.Equals(r[6]) ? 0 : r.Field <int>(6);
                        newitem.Enable        = DBNull.Value.Equals(r[7]) ? false : r.Field <Boolean>(7);
                        newitem.Creator       = r.Field <String>(8);
                        newitem.CreateDate    = DBNull.Value.Equals(r[9]) ? System.DateTime.Now : r.Field <DateTime>(9);
                        newitem.Modifier      = r.Field <String>(10);
                        newitem.ModifyDate    = DBNull.Value.Equals(r[11]) ? System.DateTime.Now : r.Field <DateTime>(11);

                        b.HaveItem.Add(newitem);
                    }
                }
            }
        }