** 原因: ** 在CodeFirst的时候,对于一对一的关系,如果在两个Entity中都互相添加了对方作为导航属性就会出现这样的错误。新建ApiController的时候提示“无法检索元数据”,新建MVCController的时候回提示“未将对象引用设置到对象的实例”
解决方案:删掉其中的一个导航属性
错误:生成的Api提示说有循环引用的情况时,在Api项目的Global.asax文件内添加代码:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
api
无法序列化:原因可能是因为Entity中的某个Entity的属性与数据库中对应的表的属性不对应,多了或少了,并且数据库迁移的时候Ef并没有发现这个不同
跨域访问Api:http://www.cnblogs.com/zd1994/p/6238468.html
//创建学校
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>
再把api的验证取消
//新增学校
// 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);
}
运行所选代码生成器时出错 调用的目标发生了异常
在api的webconfig中配置了两个connectionStrings,删除其中一个
"ExceptionMessage":"LINQ to Entities 不识别方法get_Item(Int32)”,因此该方法
原因:linq表达式中无法识别某个方法,看你写的是哪个方法
比如:
//获取角色菜单
List<Role_Menu> role_Menu = db.Role_Menu.Where(u => u.RoleID == user_Role.RoleID).ToList();
//这样就会报上面的错误,原因是where里面不能调用这种user_Role.RoleID。
//所以可以这样写,先把值构造好,再直接传值进去
Guid str1 = user_Role.RoleID;
//获取角色菜单
List<Role_Menu> role_Menu = db.Role_Menu.Where(u => u.RoleID == str1).ToList();
在应用程序配置文件中找不到名为“DBConn”的连接字符串
原因:如果解决方案下有多个项目,则在做数据库迁移的时候每个项目的config配置文件下都需要有链接数据库的字符串