我有以下内容
[DataContractAttribute]
public class Animal
{
[Key]
[XmlElement(ElementName = "Id")]
[DataMember()]
public Guid Id
{
get;
set;
}
[XmlElement(ElementName = "AnimalType")]
[DataMember()]
public List<AnimalType> AnimalType
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
我通过代码第一种方法将EF映射到表格
modelBuilder.Entity<Animal>().ToTable("Animal");
Run Code Online (Sandbox Code Playgroud)
如您所见,我没有执行一些复杂的映射,但List of AnimalType枚举没有自动映射到DB中的任何列/表.我是否需要向模型构建器添加一些额外的代码来控制枚举列表的映射?
有人能理解这个错误吗?
在模型生成期间检测到一个或多个验证错误:
System.Data.Edm.EdmEntityType :: EntityType'Address'没有定义键.定义此EntityType的键.System.Data.Edm.EdmEntitySet:EntityType:EntitySet Addresses基于没有定义键的Address类型.
我定义了这个实体:
public class Address
{
[Key]
public int ID;
[Required]
[MinLength(1)]
[MaxLength(200)]
public string Address1 { get; set; }
[MinLength(1)]
[MaxLength(200)]
public string Address2 { get; set; }
[Required]
[MinLength(1)]
[MaxLength(10)]
public string Zip { get; set; }
[MinLength(1)]
[MaxLength(100)]
public string Province { get; set; }
public virtual US_State State { get; set; }
[Required]
public virtual Country Country { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:对于一个既有Key属性数据注释又有PK的传统ID名称的类,错误如何产生任何意义.
我认为这个类满足从中生成有意义的实体所需的所有规则.
有没有办法创建一个自定义属性,使EF CodeFirst 在分配给poco类的属性时使用nvarchar(max)作为数据类型?我知道这可以通过流畅的api实现,但我们希望将所有定义放在一个地方,这就是元数据类.
流畅的API:
modelBuilder.Entity<Event>().Property(p => p.TicketText).HasColumnType("nvarchar(max)");
Run Code Online (Sandbox Code Playgroud) fluent-interface code-first entity-framework-4 data-annotations ef4-code-only
例如:
namespace PizzaSoftware.Data
{
public class User
{
public string Username { get; set; }
public string Password { get; set; }
public Permission PermissionType { get; set; }
}
public enum Permission
{
Basic,
Administrator
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用Entity-Framework的CodeFirst,我该如何保存这个值?
这适用于Windows窗体,桌面应用程序.
谢谢!
所以我整个上午一直在努力争取这个.我已经阅读了一些文章,而且我的工作大致基于这个:
这是我当前的错误:
序列化"System.Data.Entity.DynamicProxies.Order_C00CE366506BD8C6592A3CF21B9D1C5921D31C03D7322A8F6E8EAD72E113EA95"类型的对象时检测到循环引用.
这是班级:
public class Order
{
[Key]
public int OrderId { get; set; }
public int PatientId { get; set; }
public virtual Patient Patient { get; set; }
public int CertificationPeriodId { get; set; }
public virtual CertificationPeriod CertificationPeriod { get; set; }
public int AgencyId { get; set; }
public virtual Agency Agency { get; set; }
public int PrimaryDiagnosisId { get; set; }
public virtual Diagnosis PrimaryDiagnosis { get; set; }
public int ApprovalStatusId …Run Code Online (Sandbox Code Playgroud) 我想创建一个集成测试,它从数据库中抓取EF实体,将其克隆到分离的对象,修改它然后将其保存回来并再次将其与原始对象进行比较.
但是,我使用AutoMapper来创建类的克隆,但事实证明它也被跟踪或是原始对象的别名.我需要它与EF完全分离,并且能够在我的存储库类之外执行此操作(即不使用任何EF分离方法).
这样做的原因是我的EF类包含其他类的嵌套集合,EF不处理持久化整个对象树.因此,我的存储库类中的Update()方法处理这个问题,我希望我的NUnit测试来测试这段代码.我希望测试能够快速创建原始类的副本而无需EF跟踪它.
我们的项目使用Entity Framework Code First.我们希望有一个实例,其中一个非常简单的POCO表示数据库中的许多表.它是SQL Azure中水平分区策略的一部分.SQL Azure不支持文件组,因此它不支持典型的分区.将会有非常多的表,因此使用UNION ALL视图作为基表上的CHECK CONSTRAINTs的分区视图是不可行的.
因此,我们更愿意在运行时根据需要执行映射.但是,这发生在DbContext类的OnModelCreating事件中,例如
modelBuilder.Entity<EntityName>().ToTable("foo", "bar");
Run Code Online (Sandbox Code Playgroud)
.我们可以在工厂内执行此映射吗?我们更愿意向工厂提供元数据,然后让它使用Fluent API,而不是通过ModelBuilder在POCO和表之间进行一对一的映射.
首先使用代码创建一个网站,对于我自己的想法,我希望能够在您首先使用数据库并在VS2010中创建SQL服务器数据库时探索它创建的数据库.
我已经浏览了一下,我能找到的唯一相关信息似乎是先使用以前存在的db代码,我希望db首先由代码生成,我只是想知道它在哪里,或者如何更改它的默认位置,以便我可以查看它.
我在配置文件中有一个连接字符串的小提琴,但不知道我在做什么,所以没有在那里取得任何成功.它与custon连接字符串工作正常,但我仍然不知道db文件在哪里!
我正在尝试使用Entity Framework实现一个系统.这是我的两个班级
一级
public class ConsumableGood
{
public ConsumableGood() { }
public Guid ConsumableGoodId { get; set; }
public string ConsumableGoodName { get; set; }
public string ConsumableGoodPrice { get; set; }
public virtual Category Category { get; set; }
public ICollection<ConsumableGoodsStock> ConsumableGoodsStocks { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
第二类
public class ConsumableGoodsStock
{
public ConsumableGoodsStock()
{
}
public Guid ConsumableGoodsStockId { get; set; }
public double ConsumableGoodPriceIn { get; set; }
public double ConsumableGoodPriceOut { get; set; }
public int …Run Code Online (Sandbox Code Playgroud) SqlParameter和之间的主要区别是ObjectParameter什么?
ObjectParameter[] parameters =
{
new ObjectParameter("MainUserName", user.MainUserName),
new ObjectParameter("MainUserFirstName",user.MainUserFirstName),
new ObjectParameter("MainUserLastName",user.MainUserLastName),
new ObjectParameter("DOJoin", DateTime.Now),
};
SqlParameter[] parameters =
{
new SqlParameter("@MainUserName", user.MainUserName),
new SqlParameter("@MainUserFirstName",user.MainUserFirstName),
new SqlParameter("@MainUserLastName",user.MainUserLastName),
new SqlParameter("@DOJoin", DateTime.Now),
};
Run Code Online (Sandbox Code Playgroud)
我正在研究MVC Code First,我想通过存储过程与我的数据库进行通信.那么哪一个是将参数传递给SP的最佳方法?上次我试图通过传递Sql Perameters来执行SP但面临以下异常
Procedure or function 'InsertUser' expects parameter '@MainUserName', which was not supplied
Run Code Online (Sandbox Code Playgroud)
我尝试通过尝试不同的场景解决它,但没有运气.最后我想我应该使用Sql Perameters的Object Perameters intead.但不知道这些主要区别是什么?
Edite
我想运行我的下面的代码使用ExecuteSqlCommandAsync期望object[] parameters
public async Task InsertAsync(ActionCriteria obj)
{
await _dbCOntext.Database.ExecuteSqlCommandAsync(obj.SpName, obj.SqlParameter) ;
}
Run Code Online (Sandbox Code Playgroud)
public Task<int> ExecuteSqlCommandAsync(string sql, params object[] parameters);
Run Code Online (Sandbox Code Playgroud)
那么我将如何传递sqlperameters ExecuteSqlCommandAsync,以便它可以使用提供的 …