我正在使用 Visual Studio 2013 Web 表单应用程序和 MySql 数据库来构建 Web 表单应用程序,但我无法通过“成员资格和角色管理”。我对会员资格使用了数据库优先方法,当我尝试注册新用户时,收到以下错误消息:
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: MySql.Data.MySqlClient.MySqlException: Unknown column 'Extent1.Discriminator' in 'where clause'
Source Error:
Line 16: var manager = new UserManager();
Line 17: var user = new ApplicationUser() { UserName = UserName.Text };
Line 18: IdentityResult result = manager.Create(user, Password.Text);
Line 19: …Run Code Online (Sandbox Code Playgroud) mysql asp.net membership-provider entity-framework-6 asp.net-identity
我之前曾在这里问过一个关于类似主题的问题,但后来采取了不同的方法。这是我的模型:
public class ApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole,CustomUserClaim>
{
public ApplicationUser()
{
Friends = new List<Friend>();
}
[Required]
public string Alias { get; set; }
public virtual ICollection<Friend> Friends { get; set; }
}
public class Friend
{
public virtual int Id { get; set; }
public virtual ApplicationUser RequestedBy { get; set; }
public virtual ApplicationUser RequestedTo { get; set; }
public DateTime? RequestTime { get; set; }
public FriendRequestFlag FriendRequestFlag { get; set; }
}
public enum FriendRequestFlag …Run Code Online (Sandbox Code Playgroud) 我进行了自定义SqlServerMigrationSqlGenerator,通过注释从迁移中删除计算字段,并SetSqlGenerator("System.Data.SqlClient", new TestSqlServerMigrationSqlGenerator());在 中使用DbMigrationsConfiguration它来设置要使用的字段。但似乎没有被调用。
是否有任何其他要求来覆盖 sqlgenerator. 我已经重写了并generate调用中的所有方法以查看它是否被调用。我还尝试删除方法中的所有内容,但这也没有效果。SqlServerMigrationSqlGeneratorSystem.Diagnostics.Debugger.Launch();
我很难决定哪种方式最适合在我的 WebAPI 2 后端查询我的 SQL Server
我试图尽可能多地使用 async/await,但我发现当我返回整个集合时,没有可用的 async 选项。
哪种方式最好?
[ResponseType(typeof(List<ExposedPublisher>))]
[HttpGet]
public async Task<IHttpActionResult> GetPublisher()
{
var list = new List<PublisherWithMedia>();
foreach (var publisher in _db.Publisher.Where(e => e.IsDeleted == false))
{
var pub = new PublisherWithMedia()
{
Id = publisher.Id,
Name = publisher.Name,
Mediae = new List<WebClient.Models.Media>()
};
foreach (var media in publisher.Media)
{
pub.Mediae.Add(ApiUtils.GetMedia(media));
}
list.Add(pub);
}
return Ok(list);
}
Run Code Online (Sandbox Code Playgroud)
或者
[ResponseType(typeof(List<PublisherWithMedia>))]
[HttpGet]
public async Task<IHttpActionResult> GetPublisher()
{
var list = new List<PublisherWithMedia>();
var entity = await …Run Code Online (Sandbox Code Playgroud) 我正在按照此处列出的实体框架的 MySql 教程进行操作:https : //dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html
我已经通过 NuGet 安装在我的项目中:
- Entity Framework v6.2.0
- MySql.Data.Entity v6.10.7
以及它们对应的依赖关系。
我已经安装了 MySql CONNECTOR/NET v8.0.11。
我将提供者和 connectionString 添加到 App.config:
<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</entityFramework>
<connectionStrings>
<add name="mysql" connectionString="Server=localhost,3306;Database=eneagramas;Uid=root;Pwd=1234;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
基本上我遵循了官方文档中的所有说明,这是我的上下文类:
class MyContext : DbContext
{
public MyContext() : base("mysql")
{
//nothing here
}
public DbSet<Humans> Humans { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然而,我在访问数据库时收到此错误:
System.Data.Entity.Core.ProviderIncompatibleException
HResult=0x80131501 …Run Code Online (Sandbox Code Playgroud) 我使用实体框架将数据插入 SQL 表中。
对于数量较多的记录,Add()我不再使用 ,AddRange()而是稍后调用SaveChanges()。
插入记录仍然花费太多时间 - 有什么解决方案可以提高速度吗?
_Repository.InsertMultiple(deviceDataList);
await _Repository.SaveAsync();
public void InsertMultiple(List<string> deviceDataList)
{
context.Devices.AddRange(devices);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 EF6 和代码优先创建一个简单的表。除列之外的所有字段均已创建CreateDate。这是为什么?
public class InspectionPoint
{
public DateTime CreateDate { get; }
public string Detail { get; set; }
public int Id { get; set; }
public bool IsActive { get; set; }
public string Name { get; set; }
public string Question { get; set; }
public DateTime UpdateDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
该UpdateDate字段正在按预期创建,但不是CreateDate. 这是为什么?
我想使用 mysql 从模型 Entity Framework 6 生成数据库。我将mysql的所有库添加到referacen和配置文件app.conf

这是配置文件 app.conf
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.21.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</providers>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)
但最终我遇到了这个问题

我保存并重建重新启动视觉效果,但没有解决
我有这个型号:
public class Blog
{
public int ID { get; set; }
public string Title { get; set; }
}
public class Post
{
public int ID { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogID { get; set; }
public Blog Blog { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
有这个配置:
public class BlogMap : EntityTypeConfiguration<Blog>
{
public BlogMap()
{
this.ToTable("Blogs", "dbo");
this.HasKey(t => t.ID);
this.Property(t => t.ID).HasColumnName("ID");
this.Property(t => …Run Code Online (Sandbox Code Playgroud) 使用:MVC 5,C#,VS 2013,EF6和CodeFirst,SQL Server 2012
我已经尝试了四种不同的方式来获取数据而没有任何问题.
IQueryable<vw_Results> qryResults = _db.vw_Results;
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我有13个过滤器选项,所有13个的代码遵循相同的逻辑:
string fmVal = string.Empty;
if (!string.IsNullOrEmpty(form["Locations"]))
{
fmVal = form["Locations"].ToString();
qryResults = qryResults.Where(w => w.LOCATION.CompareTo(fmVal) == 0);
}
if (!string.IsNullOrEmpty(form["ddActionLevels"]))
{
//qryResults = qryResults.Where(w => w.PAL_ID==form["ddActionLevels"].ToString());
vbVal = form["ddActionLevels"].ToString(); ;
//qryResults = qryResults.Where(w => w.AL == vbVal);
qryResults.Where(w => w.AL.CompareTo(vbVal) >= 0);
}
if (!string.IsNullOrEmpty(form["btnGenericRpt"]))
{
qryResults.Where(w => w.LOCATION != "BB1");
}
if (!string.IsNullOrEmpty(form["ddProjects"]))
{
vbVal = form["ddProjects"].ToString();
qryResults.Where(w => w.PROJECT == vbVal);
}
//...
myModel.Results = qryResults.ToList();
return …Run Code Online (Sandbox Code Playgroud)