我有以下表Essence,EssenseSet和Essense2EssenceSet
Essense2EssenceSet 是创建M:M关系的链接表.
虽然在EF代码中,我一直无法使M:M关系正常工作.
这是我的代码:
[Table("Essence", Schema = "Com")]
public class Essence
{
public int EssenceID { get; set; }
public string Name { get; set; }
public int EssenceTypeID { get; set; }
public string DescLong { get; set; }
public string DescShort { get; set; }
public virtual ICollection<EssenceSet> EssenceSets { get; set; }
public virtual EssenceType EssenceType { get; set; }
}
[Table("EssenceSet", Schema = "Com")]
public class EssenceSet
{
public int …Run Code Online (Sandbox Code Playgroud) mapping many-to-many entity-framework code-first entity-framework-4.1
是否可以使用EF 4.0映射以下POCO类?
public class MyClass
{
private string _myData;
public MyClass()
{ }
public MyClass(string myData)
{
_myData = myData;
}
public string MyData
{
get
{
return _myData;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在NHibernate中我认为在映射中使用Access属性是可能的:
<class name="MyClass" table="MyTable">
<property name="MyData" access="field.camelcase-underscore" column="MyCol" type="string" length="50" />
</class>
Run Code Online (Sandbox Code Playgroud)
我想知道EF 4.0中是否有一些Access等价物?目前,我能够映射类只如果我添加受保护的setter到MyData的属性:
public string MyData
{
get
{
return _myData;
}
protected set
{
_myData = value;
}
}
Run Code Online (Sandbox Code Playgroud)
它可以工作,但对于遗留类,它意味着更新所有没有setter的属性.
编辑:
我已经更新了最后一个代码示例,因为它也不适用于私有setter.塞特必须至少受到保护.如果setter是私有的,或者在抛出异常后不存在:
System.InvalidOperationException:映射和元数据信息无法进行的EntityType"MyNamespace.MyClass"中找到.
我遵循WSDL优先(由我们的客户提供)方法来开发WCF服务,但是从我的wcf服务生成的WSDL与我们的客户提供给我的WSDL略有不同,并且由于这种不匹配,客户端在调用时遇到了困难.我的服务.
客户提供wsdl:
<wsdl:service name='CheckoutService'>
<wsdl:port binding='tns:CheckoutBinding' name='CheckoutServicePort'>
<soap:address location='place holder to service uri' />
</wsdl:port>
</wsdl:service>
从wcf服务生成的WSDL:
<wsdl:service name="CheckoutService">
<wsdl:port binding="tns:CheckoutBinding" name="CheckoutBinging">
<soap:address location="place holder to service uri" />
</wsdl:port>
</wsdl:service>
而且,我的服务设置如下:
<endpoint name="CheckoutBinding" address="" binding="basicHttpBinding" bindingName="CheckoutServicePort" bindingConfiguration="basicHttpBinding" bindingNamespace="<<namespace>>" contract="<<contractname>>" />
我已经使用WSCF.Blue从客户端提供的wsdl生成服务器存根代码,并在生成的代码中进行了微小的更改,以发出与客户端提供的WSDL完全相同的WSDL,但我不知道要在客户端提供什么更改.配置文件或生成的代码,以获得与客户端提供的wsdl文件相同的"wsdl:port/@ name".
根据此URL,serviceendpoint名称属性将映射到wsdl:port/@ name和wsdl:binding/@ name.基于此,我的配置文件中的endpoint/@ name属性值映射到wsdl:port/@ name和wsdl:binding/@ name但我希望将不同的名称映射到wsdl:port/@ name和wsdl:binding/@name属性.
请帮助我实现这一目标.
我正在使用Entity Framework CTP5和Code First.我需要更改SQL Server中特定列的排序规则.我相信默认排序规则是SQL_Latin1_General_CP1_CI_AS,但我需要将此列匹配更改为SQL_Latin1_General_CP1_CS_AS(区分大小写).
有没有办法在Code First中使用ModelBuilder来更改特定的列排序规则?
BarDev
sql-server entity-framework entity-framework-4 ef-code-first entity-framework-ctp5
我遇到了代码优先模型的问题.数据现在在数据库中,所以我不能使用DropCreateDatabaseIfModelChanges类重新种子数据库,但我需要更改一个表,以便bigint列不是IDENTITY(1,1).我已经成功使用SSMS,但现在我的EF代码说它已经过时了.这是有问题的表的代码:
public class Vote {
[Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
public long FacebookUserId { get; set; }
[Required]
public Entity Entity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
所以我改变了我的表模式和我的模型(我认为它是它的反映,但我显然是错的),但EF仍然说我的模型已经过时了,我无法重新播种数据库让它"完美".
任何帮助将非常感激.
谢谢,
本杰明
是否可以通过实体框架设计器将类型设置为日期(非日期时间)?
我环顾四周,我发现的唯一答案是一年前来自MSDN论坛的帖子......
我在这里很新,我不太明白他们谈论结构注释的说明......
我可以通过生成的SQL脚本并更改每一行,但我宁愿不这样做......
sql entity entity-framework sql-server-2008 entity-framework-4
我有一个课程,如下所示
public class Survey
{
public Survey()
{
SurveyResponses=new List<SurveyResponse>();
}
[Key]
public Guid SurveyId { get; set; }
public string SurveyName { get; set; }
public string SurveyDescription { get; set; }
public virtual ICollection<Question> Questions { get; set; }
public virtual ICollection<SurveyResponse> SurveyResponses { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给了我以下异常
无法序列化'System.Collections.Generic.ICollection类型的成员'SurveyGenerator.Survey.Questions'
当我将ICollection转换为List时,它正确地序列化
由于它是实体框架的POCO,我无法将ICollection转换为List
我在C#中编写了一个程序集来执行MySQL数据库的所有数据访问.我在C#winform桌面应用程序中成功使用了程序集(已编译的dll).但它仅适用于安装了"MySQL Connector Net 6.4.4"的PC.
我试图在我的asp.net网站项目中使用相同的程序集.首先我得到一个关于缺少连接字符串的错误.通过将MySQL连接字符串添加到web.config文件可以轻松解决这个问题.我现在得到这个错误(下面列出的堆栈跟踪),我已经尝试将以下dll添加到我的bin文件夹来解决它但它不起作用.
MySql.Data.dll
MySql.Data.Entity.dll
MySql.Web.dll
System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown.
---> System.ArgumentException: The specified store provider cannot be found in the configuration, or is not valid.
---> System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) at System.Data.EntityClient.EntityConnection.GetFactory(String providerString)
--- End of inner exception stack trace
Run Code Online (Sandbox Code Playgroud) 我们有非常复杂的派生类结构,它们构成了我们的系统/集成测试.现在我开始TestFixture在我的一个测试类中使用参数化NUnit ,而ReSharper 6.1.1真的不喜欢它.
如果我直接从单元测试会话中运行测试,则测试夹具始终标记为不确定.如果我从代码中运行测试,我会得到相同的结果,但是如果我在测试夹具上展开Resharper的图标并选择仅运行的单个特定测试用例,那么很少会在夹具内运行所有测试,但在大多数情况下它将再次标记夹具是不确定的.
我的参数化夹具在NUnit测试运行器中没有任何问题.
我还创建了一些具有单级继承的示例参数化夹具,它可以工作,因此问题出现在我们整个"框架"的系统测试中.
有没有办法调查为什么夹具被标记为不确定并被排除在试运行之外?
我正在尝试使用常见的EntityTypeConfiguration类来为我的所有实体配置主键,以便每个派生的配置类不会重复.我的所有实体都实现了一个公共接口IEntity(它表示每个实体必须具有int类型的Id属性).
我的配置基类如下所示:
public class EntityConfiguration<TEntity> : EntityTypeConfiguration<TEntity>
where TEntity : class , IEntity {
public EntityConfiguration() {
HasKey( e => e.Id );
Property( e => e.Id ).HasDatabaseGeneratedOption( DatabaseGeneratedOption.Identity );
}
}
Run Code Online (Sandbox Code Playgroud)
然后每个实体都有自己的特定配置类,扩展这个类,如下所示:
public class CustomerConfiguration : EntityConfiguration<Customer> {
public CustomerConfiguration() : base() {
// Entity specific configuration here
}
}
Run Code Online (Sandbox Code Playgroud)
它编译得很好,但我遇到的问题是,在运行时,当EF 4.1 RC尝试创建模型时,我会得到以下异常:
System.InvalidOperationException未处理Message =关键组件"Id"不是"Customer"类型的声明属性.验证它是否未从模型中明确排除,并且它是有效的原始属性.来源=的EntityFramework
如果我将CustomerConfiguration类更改为从EntityTypeConfiguration <Customer>扩展并重复主键配置,那么它工作正常,但我失去了共享通用配置的能力(DRY主体是动机).
这里参考的是其他涉及的类:
public interface IEntity {
int Id { get; set; }
}
public class Customer : IEntity {
public virtual int …Run Code Online (Sandbox Code Playgroud) .net ×2
c# ×2
mapping ×2
code-first ×1
entity ×1
many-to-many ×1
mysql ×1
nunit ×1
resharper ×1
sql ×1
sql-server ×1
wcf ×1
wsdl ×1