为新实体设置不起作用的字段 - EntityFramework

时间:2016-07-07 09:38:18

标签: asp.net entity-framework

过去3天我一直在不停地编码,现在我遇到了这个问题。从文本框设置2个变量的文本。这让我很生气。代码在编辑项目时起作用(字段不为空),在添加一个(两个字段为空)时它不起作用。

我尝试了什么: -  我尝试过使用.ToString()方法,因为没有这种方法就行不通。

令我困惑的代码部分:

proiect.titlu = projectTitleTb.Text.ToString();
proiect.descriere = projectDescTb.Text.ToString();

enter image description here

由于我的时间已经不多了,我需要对此做出严厉的回答,我无法相信这样的事情需要花费很多时间。
编辑: Before and after running the code for different case

编辑:
我认为这可能是由于对象类型之间的差异造成的:编辑时,对象类型是

{System.Data.Entity.DynamicProxies.proiecte_BFF409556A583A0C9542252D0669E388052C2AB6DA93A2EE4C48CBFB216E8114},

虽然添加它的类型简直就是proiecte。变量存储在viewstate中:

proiecte proiect
    {
        get
        {
            if (ViewState["proiect"] == null)
            {
                return new proiecte();
            }
            return ViewState["proiect"] as proiecte;
        }
        set
        {
            ViewState["proiect"] = value;
        }
    }  

这是编辑时分配对象的内容:     proiect = ProiecteDB.getById(id_proiect);
这是函数getById

public static dynamic getById(int id)
    {
        var db = new firma_itEntities();
        var query = (from p in db.proiectes
                     where p.id_proiect == id
                     select p).FirstOrDefault();
        return query;
    }

当添加对象而不进行编辑时,它不会查询数据库,因此它只是创建用途     return new proiecte();

这是班级:

[Serializable]
    public partial class proiecte
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage",     "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public proiecte()
        {
            this.tasks = new HashSet<task>();
        }

        public int id_proiect { get; set; }
        public string descriere { get; set; }
        public string status { get; set; }
        public string titlu { get; set; }
        public string disponibil_resurse { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage",   "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<task> tasks { get; set; }
    }

2 个答案:

答案 0 :(得分:0)

好吧显然我通过创建一个新对象来解决这个问题,我在其中相应地设置了属性:

remover = NULL;

答案 1 :(得分:-1)

我希望你已经为变量设置了属性&#34; titlu&#34;和&#34; descriere&#34;在你的项目中。

请您发布上述代码。