出于某种原因,我的数据库没有被创建,我没有收到任何错误.我正在使用"SQL Server"
要在global.asax.ca文件中初始化数据库:
protected void Application_Start(object sender, EventArgs e)
{
//BREAKPOINT HITS. GOOD
Database.SetInitializer<MenuManagerContext>(new MenuManagerServiceInitializer());
}
Run Code Online (Sandbox Code Playgroud)
...
public class MenuManagerServiceInitializer : CreateDatabaseIfNotExists<MenuManagerContext>
{
//BREAKPOINT NEVER HITS. BAD
protected override void Seed(MenuManagerContext context)
{
context.Chains.Add(...);
context.SaveChanges();
base.Seed(context);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有为什么没有创建数据库的想法?我甚至没有收到错误,所以很难说出错了什么......
我有这种搜索方法:
public List<Employeees> AutoSuggestEmployeee(string keyword,
long employeeeTypeId, int count)
{
return context.Employeees.Where(
x => x.EmployeeeName.Contains(keyword)
&& x.EmployeeeTypeId == employeeeTypeId)
.Take(count).ToList();
}
Run Code Online (Sandbox Code Playgroud)
我有另一个Employeees集合,比如"BadEmployeees",我想要的是使用相同的先前方法返回除"BadEmployeees"之外的所有Employeees.
我试着像这样写:
return context.Employeees.Where(
x => x.EmployeeeName.Contains(keyword)
&& x.EmployeeeTypeId == employeeeTypeId)
.Except(BadEmployeees).Take(count).ToList();
Run Code Online (Sandbox Code Playgroud)
但它提供了一个例外,Except可以使用Int,Guid等数据类型...
我有以下型号:
public class Product
{
[Key]
[HiddenInput(DisplayValue = false)]
public int Id { get; set; }
[Required]
[StringLength(10)]
public string ProductCode { get; set; }
[Required]
[StringLength(40)]
public string ProductName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以及控制器中的以下一对Add方法:
[HttpGet]
public ActionResult Add()
{
return View();
}
[HttpPost]
[ValidateInput(false)]
[ValidateAntiForgeryToken]
public ActionResult Add(Product product)
{
productRepository.Add(product);
return RedirectToAction("Index");
}
Run Code Online (Sandbox Code Playgroud)
这是添加视图:
@using Models
@model Product
<h2>Add Product</h2>
@using (@Html.BeginForm("Add", "Home")) {
@Html.AntiForgeryToken()
@Html.EditorForModel()
<input type="submit" id="btnSubmit" value="Submit"/>
}
Run Code Online (Sandbox Code Playgroud)
一切都显示得很好,不幸的是我无法提交表格.我花了一段时间才弄清楚Id字段是否经过验证.实际上,如果我删除该HiddenInput属性,我可以看到提交它告诉我需要Id字段.
有没有办法在仍然使用时将其标记为不需要EditorForModel()?
我对Entity框架有点困惑,我想使用代码优先方法; infact我想写一下我的数据库表是如何通过类定义组成的.
主要的问题是我需要创建一个数据库(或打开它),通过选择它的路径(用户可以选择打开哪个数据库,并在他想要的时候创建新的数据库).我已经选择了Sql server compact来实现这一点,但是我仍然不明白如何使用代码优先方法来处理这种情况,因为我不明白如何选择应该使用代码优先方法创建数据库的位置,如果是可能.
任何人都可以解释我做错了什么,并建议一个不同的路线,如果有的话?谢谢
我正在尝试使用Entity Framework并拥有一个联系人数据库,其中包含来自Google地图的经度和纬度数据.
指南说这应该存储为浮动.
我创建了我的POCO实体,包括Longitudeas float和Latitudea float.
我刚刚注意到,在数据库中,这些都是如此real.
在我从谷歌获取任何数据之前还有很多工作要做,我离测试很远,我只是想知道是否有人可以告诉我这是否会成为后来的问题?
使用EF Code First我有以下内容,例如:
public class Blog
{
public int BlogID { get; set; }
public string Content { get; set; }
public virtual User User { get; set; }
public virtual ICollection<BlogMeta> BlogMeta { get; set; }
}
public class BlogMeta
{
public int BlogMetaID { get; set; }
public string Content { get; set; }
public virtual User User { get; set; }
public virtual Blog Blog { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这将成功生成表Blog和BlogMeta,并与User表创建外键关系.阅读本文后,我将其更改为以下内容:
public class Blog
{ …Run Code Online (Sandbox Code Playgroud) 我注意到,默认情况下,Entity Framework Code First忽略了实例化ICollection<T>属性,除非集合中至少有一个项目.我更倾向于保证集合总是空的HashSet(即,HashSet零项目),而不是null没有项目存在.
EF Code First是否有任何约定或设置可以启用此功能?
c# entity-framework code-first ef-code-first entity-framework-4.1
代码优先的流畅API 的HasOptional方法有一个DataAnnotation属性对应吗?
我想用属性标记我的属性,而不是使用流畅的API.
这是我当前的模型和OnModelCreating代码:
public class Employee
{
#region Properties
public int EmployeeID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int? ManagerID { get; set; }
public Employee Manager { get; set; }
#endregion
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Employee>().
HasOptional(e => e.Manager).
WithMany().
HasForeignKey(m => m.ManagerID);
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在使用Entite Framework 4.2 CF和SQLite,但是当我尝试启动应用程序时,我得到"提供程序不支持CreateDatabase"错误.这是我的模型映射:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
#region NewsMapping
modelBuilder.Entity<News>().ToTable("news");
modelBuilder.Entity<News>().HasKey(x => x.Id).Property(x => x.Id).HasColumnName("ID").HasColumnOrder(0);
modelBuilder.Entity<News>().Property(x => x.Status).HasColumnName("STATUS");
modelBuilder.Entity<News>().Property(x => x.NewsTitle).HasColumnName("NEWS_TITLE");
modelBuilder.Entity<News>().Property(x => x.Content).HasColumnName("CONTENT_1");
modelBuilder.Entity<News>().Property(x => x.IsImportant).HasColumnName("IS_IMPORTANT");
modelBuilder.Entity<News>().Property(x => x.OrderNumber).HasColumnName("ORDER_NUMBER");
modelBuilder.Entity<News>().Property(x => x.CreateDate).HasColumnName("CREATE_DATE");
#endregion
base.OnModelCreating(modelBuilder);
}
Run Code Online (Sandbox Code Playgroud)
这段代码有什么问题?
谢谢
sqlite system.data.sqlite ef-code-first entity-framework-4.1 asp.net-mvc-3
我有两个实体
BusinessUser { Id(PK), Name,...}
Login { BusinessUserID(PK, FK), Email, Password, etc...}
Run Code Online (Sandbox Code Playgroud)
BusinessUser和之间的关系Login是一对一/一.
我在BusinessUser EF配置类中进行了以下配置
this.HasOptional(bu => bu.LoginInfo)
.WithOptionalPrincipal(l => l.BusinessUser);
Run Code Online (Sandbox Code Playgroud)
在登录EF配置类中
this.HasRequired(l => l.BusinessUser)
.WithOptional(bu => bu.LoginInfo);
Run Code Online (Sandbox Code Playgroud)
我得到以下异常
在"登录"类型上声明的导航属性"BusinessUser"已配置了冲突的多重性.
我首先在EF 4.1代码中使用我的一对一/零配置错误.
更新1:以下是我的班级结构
public class BusinessUser {
public virtual int ID { get; set; }
public virtual int BusinessID { get; set; }
public virtual Business Business { get; set; }
public Login LoginInfo { get; set; }
}
public class Login {
public …Run Code Online (Sandbox Code Playgroud) orm ado.net entity-framework ef-code-first entity-framework-4.1
ef-code-first ×10
c# ×5
ado.net ×1
code-first ×1
foreign-keys ×1
linq ×1
linq-to-sql ×1
orm ×1
sql-server ×1
sqlite ×1