【问题标题】:I dont understand the error.. I think as far as I know there is a dataType, but I dont see how?我不明白这个错误..我认为据我所知有一个数据类型,但我不明白怎么做?
【发布时间】:2018-10-12 12:09:10
【问题描述】:

在下面的代码中,我希望我能正确地指出什么是错的。我需要能够调用 item.departments.dept_Type 并且这应该是可能的,因为我已经建立了关联。如果我理解正确,我不需要在查询上创建内部联接来获取数据。 这是我的 PersonClass

    namespace DATALAYER.DataHandler
{

    [Table(Name = "People")]

        public class Person 
        {


        private int _DepartmentID;
        public EntityRef<Department> _Department;
        public Person() { this._Department = new EntityRef<Department>(); }
        private int _ID;
            [Column(IsPrimaryKey =true, Storage ="_ID")]
            public int ID
            {
                get { return this._ID; }
                set { this._ID = value; }
            }
            private string _p_FirstName;
            [Column(Storage = "_p_FirstName")]
            public string p_FirstName
            {
                get { return this._p_FirstName; }
                set { this._p_FirstName = value; }
            }
            private string _LastName;
            [Column(Storage = "_LastName")]
            public string p_LastName
            {
                get { return this._LastName; }
                set { this._LastName = value; }
            }
            private string _EmailAddress;
            [Column(Storage = "_EmailAddress")]
            public string p_EmailAddress
            {
                get { return this._EmailAddress; }
                set { this._EmailAddress = value; }
            }
            private string _Password;
            [Column(Storage = "_Password")]
            public string p_Password
            {
                get { return this._Password; }
                set { this._Password = value; }
            }
            private string _SSID;
            [Column(Storage = "_SSID")]
            public string p_SSID
            {
                get { return this._SSID; }
                set { this._SSID = value; }
            }
            private string _DOB;
            [Column(Storage = "_DOB")]
            public string p_DOB
            {
                get { return this._DOB; }
                set { this._DOB = value; }
            }
            private string _CellNumber;
            [Column(Storage = "_CellNumber")]
            public string p_CellNumber
            {
                get { return this._CellNumber; }
                set { this._CellNumber = value; }
            }

            [Column(Storage = "_DepartmentID", DbType = "Int")]
            public int p_Department_dept_ID
            {
                get { return this._DepartmentID; }
                set { this._DepartmentID = value; }
            }

            [Association(Storage = "_DepartmentID", ThisKey = "p_Department_dept_ID")]
            public Department Department
            {
                get { return this._Department.Entity; }
                set { this._Department.Entity = value; }
            }
    }

}

这是我的部门代码

    namespace DATALAYER.DataHandler
{
    [Table(Name = "Departments")]
    public class Department
    {
        //private EntitySet<Person> _Person;
        //public Department()
        //{
        //    this._Person = new EntitySet<Person>();
        //}
        private int _DepartmentID;
        [Column(IsPrimaryKey = true, Storage = "_DepartmentID")]
        public int dept_ID
        {
            get { return this._DepartmentID; }
            set { this._DepartmentID = value; }

        }
        private string _deptType;
        [Column(Storage = "_deptType")]
        public string dept_Type
        {
            get { return this._deptType; }
            set { this._deptType = value; }
        }
        //[Association(Storage = "_Person", OtherKey = "ID")]
        //public EntitySet<Person> Persons
        //{
        //    get { return this._Person; }
        //    set { this._Person.Assign(value); }
        //}

    }
}

现在我在想的问题是人员的​​主键和部门的外键之间的数据类型存在问题。但由于他们都是 int 我不明白这怎么会是个问题。

如果有人可以解释我的问题,如果我错了或什么,或者帮助我解决问题,请。

添加了这个类

namespace DATALAYER.DataHandler
{
public class SHSdb2 : DataContext
{
    public Table<Person> People;
    public Table<Department> Department;
    //public Table<Address> Address;
    public SHSdb2(string connection) : base(connection) { }
}

} 人表 部门表

没有这个代码它可以工作,但我只能调用表格内的东西

        [Column(Storage = "_DepartmentID", DbType = "Int")]
    public int p_Department_dept_ID
    {
        get { return this._DepartmentID; }
        set { this._DepartmentID = value; }
    }

    [Association(Storage = "_DepartmentID", ThisKey = "p_Department_dept_ID")]
    public Department Department
    {
        get { return this._Department.Entity; }
        set { this._Department.Entity = value; }
    }

【问题讨论】:

  • 单步执行代码时会发生什么?它实际上在哪里失败了?
  • 什么是SHSdb2?您真的在使用 LINQ to SQL 吗?或者也许是实体框架?
  • 当它进入foreach时
  • SHSdb2 是我的项目名称,不允许使用实体框架,这就是我使用这种 Linq 映射方法的原因
  • 添加了另一个类可能会有所帮助。不确定最小、竞争和可验证的示例。如果你复制过去,你可能只需要数据库,它应该可以工作......我认为。

标签: c# sql-server linq-to-sql mapping


【解决方案1】:

似乎我用这个修复了它,不确定它是否可以修复,或者我很幸运,如果有人仍然可以向我解释这一点,我将不胜感激。

var personQuery =
            from per in db.People
            where per.p_FirstName == "Christian" 
            select per.Department;

我正在考虑指定它需要从允许它在 foreach 中获取的部门获取数据。

【讨论】:

    猜你喜欢
    • 2021-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 2016-08-12
    相关资源
    最近更新 更多