Api:無(wú)法檢索元數(shù)據(jù),mvc:未將對(duì)象引用設(shè)置到對(duì)象的實(shí)例

** 原因: ** 在CodeFirst的時(shí)候,對(duì)于一對(duì)一的關(guān)系,如果在兩個(gè)Entity中都互相添加了對(duì)方作為導(dǎo)航屬性就會(huì)出現(xiàn)這樣的錯(cuò)誤。新建ApiController的時(shí)候提示“無(wú)法檢索元數(shù)據(jù)”,新建MVCController的時(shí)候回提示“未將對(duì)象引用設(shè)置到對(duì)象的實(shí)例”
解決方案:刪掉其中的一個(gè)導(dǎo)航屬性


Solution

錯(cuò)誤:生成的Api提示說(shuō)有循環(huán)引用的情況時(shí),在Api項(xiàng)目的Global.asax文件內(nèi)添加代碼:

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
            GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);

api
無(wú)法序列化:原因可能是因?yàn)镋ntity中的某個(gè)Entity的屬性與數(shù)據(jù)庫(kù)中對(duì)應(yīng)的表的屬性不對(duì)應(yīng),多了或少了,并且數(shù)據(jù)庫(kù)遷移的時(shí)候Ef并沒(méi)有發(fā)現(xiàn)這個(gè)不同

跨域訪(fǎng)問(wèn)Api:http://www.cnblogs.com/zd1994/p/6238468.html

//創(chuàng)建學(xué)校
var create = function (school) {
return $http.post(schoolApiUrl + "SchoolPost",school);
};

message:不支持OPTIONS方法:
解決方案:
API Web.config

   <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <!--<remove name="OPTIONSVerbHandler" />-->
      <remove name="TRACEVerbHandler" />
      <!--<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />-->
    </handlers>

再把a(bǔ)pi的驗(yàn)證取消

//新增學(xué)校

        // POST: api/Schools
        [HttpPost]
        [ResponseType(typeof(School))]
        public IHttpActionResult SchoolPost(School school)
        {
            //school = JsonConvert.DeserializeObject<School>(thx);
            //if (!ModelState.IsValid)
            //{
            //    return BadRequest(ModelState);
            //}

            db.Schools.Add(school);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = school.ID }, school);
        }

運(yùn)行所選代碼生成器時(shí)出錯(cuò) 調(diào)用的目標(biāo)發(fā)生了異常

在api的webconfig中配置了兩個(gè)connectionStrings,刪除其中一個(gè)

"ExceptionMessage":"LINQ to Entities 不識(shí)別方法get_Item(Int32)”,因此該方法

原因:linq表達(dá)式中無(wú)法識(shí)別某個(gè)方法,看你寫(xiě)的是哪個(gè)方法
比如:

            //獲取角色菜單
          List<Role_Menu> role_Menu = db.Role_Menu.Where(u => u.RoleID ==    user_Role.RoleID).ToList();
          //這樣就會(huì)報(bào)上面的錯(cuò)誤,原因是where里面不能調(diào)用這種user_Role.RoleID。

            //所以可以這樣寫(xiě),先把值構(gòu)造好,再直接傳值進(jìn)去
             Guid str1 = user_Role.RoleID;
            //獲取角色菜單
            List<Role_Menu> role_Menu = db.Role_Menu.Where(u => u.RoleID == str1).ToList();

在應(yīng)用程序配置文件中找不到名為“DBConn”的連接字符串

原因:如果解決方案下有多個(gè)項(xiàng)目,則在做數(shù)據(jù)庫(kù)遷移的時(shí)候每個(gè)項(xiàng)目的config配置文件下都需要有鏈接數(shù)據(jù)庫(kù)的字符串

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容