我正在进入实体框架,但我不确定我是否错过了代码优先方法中的关键点.
我正在使用基于https://genericunitofworkandrepositories.codeplex.com/的代码的通用存储库模式,并创建了我的实体.
但是当我尝试访问或修改实体时,我会遇到以下情况:
System.InvalidOperationException:实体类型Estate不是当前上下文的模型的一部分.
当我尝试从我的存储库访问它时会发生这种情况:
public virtual void Insert(TEntity entity)
{
((IObjectState)entity).ObjectState = ObjectState.Added;
_dbSet.Attach(entity); // <-- The error occurs here
_context.SyncObjectState(entity);
}
Run Code Online (Sandbox Code Playgroud)
数据库(./SQLEXPRESS)创建得很好,但实体(表)不是在启动时创建的.
我想知道我是否需要显式设置实体的映射?EF不能自己做到这一点吗?
我的实体是:
public class Estate : EntityBase
{
public int EstateId { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的背景如下:
public partial class DimensionWebDbContext : DbContextBase // DbContextBase inherits DbContext
{
public DimensionWebDbContext() :
base("DimensionWebContext")
{
Database.SetInitializer<DimensionWebDbContext>(new CreateDatabaseIfNotExists<DimensionWebDbContext>());
Configuration.ProxyCreationEnabled = false;
}
public new IDbSet<T> Set<T>() where T : class …Run Code Online (Sandbox Code Playgroud) 我正在使用Entity Framework构建一个Web应用程序,数据库是在启动时创建的,我的种子方法将一些实体添加到数据库中而没有任何问题.此外,实体的检索工作没有问题.
我的问题是,如果我尝试从UI层创建实体,我会遇到错误OriginalValues cannot be used for entities in the Added state.UI没有抛出异常,但是当我从问题中挖掘出来时,我发现了它.
我发生在我身上:
public virtual TEntity Add(TEntity entity)
{
var entry = _context.Entry(entity);
entry.State = EntityState.Added;
_dbSet.Add(entity);
return entity;
}
Run Code Online (Sandbox Code Playgroud)
截图:

实体非常小并且映射:
public abstract class EntityBase
{
public int Id { get; set; }
}
public class AccessCode : EntityBase
{
public string Code { get; set; }
public int UsageCount { get; set; }
}
public class AccessCodeMapping : EntityTypeConfiguration<AccessCode>
{
public AccessCodeMapping()
{
// Table
ToTable("AccessCode"); …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置我的依赖注入,我需要IAuthenticationManager从ASP.NET身份注入一个OwinContext.
为此,我来自我的Global.asax -> ServiceConfig.Configure()跑步:
container.Register(() => HttpContext.Current.GetOwinContext().Authentication);
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的应用程序时,我收到此消息:
在上下文中找不到owin.Environment项
为什么这个HttpContext.Current.GetOwinContext()不能从Global.asax获得?
Startup.cs
[assembly: OwinStartupAttribute(typeof(MyApp.Web.Startup))]
namespace Speedop.Web
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Startup.Auth.cs
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<UserManager<User, int>, User, int>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentityCallback: (manager, user) => manager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie),
getUserIdCallback: (id) => (Int32.Parse(id.GetUserId())) …Run Code Online (Sandbox Code Playgroud) 我有一个命令看起来像:
public interface ICommand {
// Just a marker interface
}
public interface IUserAware {
Guid UserId { get; set; }
}
public class CreateSomething : ICommand, IUserAware
{
public string Title { get; set; }
public Guid UserId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
REST请求是:
PUT /create HTTP/1.1
UserId: 7da6f9ee-2bfc-70b1-f93c-10c950c8f6b0 // Possible an Auth token and not a userId like here.
Host: localhost:63079
Content-Type: application/json
Cache-Control: no-cache
{
"title": "This is a test title"
}
Run Code Online (Sandbox Code Playgroud)
我有一个API控制器动作:
[HttpPut, Route("create")]
public IHttpActionResult …Run Code Online (Sandbox Code Playgroud) 我开发了我的第一个Web应用程序,令人惊讶的是,它正变得非常受欢迎.
由于该网站现已上线,我很难做一些更改,因为担心有些人仍然登录并正在使用该应用程序.
我希望避免使用重复的Web应用程序实例进行测试.
有没有办法让网站处于"维护模式",只有我可以访问它?就像重定向到包含一些信息的页面一样,告诉它处于维护模式.
谢谢.:-)
我正在将Pusher实现到我的React + Redux Saga应用程序中,但是我遇到了一些问题,我在一些回调中遇不到这些put(...)方法.console.log(...)在方法中使用等确实显示,但我无法进入put我的应用程序状态.
我在异步/生成器函数的一些实现上可能是错的,但我现在几乎被卡住了.
我的代码说明了什么不会触发:
import { takeLatest } from 'redux-saga'
import { call, put } from 'redux-saga/effects'
// Pusher actions
export const pusherConnecting = () => {
return {
type: ActionTypes.PUSHER_CONNECTING
}
};
export const pusherConnectSucceeded = (client) => {
return {
type: ActionTypes.PUSHER_CONNECT_SUCCEEDED,
client: client
}
};
const pusherConnectFailed = (exception) => {
return {
type: ActionTypes.PUSHER_CONNECT_FAILED,
message: exception
}
};
// Pusher Saga
function * connectPusher(action) {
try …Run Code Online (Sandbox Code Playgroud) 我正在使用Google Maps API在特定页面上显示地图.
问题是该文件http://maps.google.com/maps?file=api.....有时会加载非常慢 - 降低页面的性能,因为其余的JavaScript首先加载到文档准备就绪,这很少到达 - 因为浏览器锁定等待来自Google的文件.
我试图将JavaScript文件从<head>标记移动到我的内容下.但其余的JavaScript从未被解雇,因为浏览器会等待来自Google的文件.
有没有办法解决这个问题,还是有其他人遇到过同样的问题?它最近开始,我不明白为什么.
这是我的代码,如果有人有兴趣:
<script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2&sensor=true&key=ABQIAAAAa24xicak8_ghHX58i7La7hRFh9iM79SNC94rOejOtdMRvQmJiBS6Uv5F_1BNSh9ZuSzFXyekHISgew"> </script>
<script type="text/javascript" src="/js/maps.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// Google Maps
initialize();
// Other JavaScript comes here....
});
</script>
Run Code Online (Sandbox Code Playgroud)
如果我访问
http://maps.google.com/maps?file=api&v=2&sensor=true&key=ABQIAAAAa24xicak8_ghHX58i7La7hRFh9iM79SNC94rOejOtdMRvQmJiBS6Uv5F_1BNSh9ZuSzFXyekHISgew
Run Code Online (Sandbox Code Playgroud)
文件立即加载.
也许是一个基本问题,但让我们说我有一个长度为2000个字符的字符串,我需要将此字符串拆分为每个最多512个字符的块.
有没有一个好方法,像一个循环左右这样做?
我见过很多检查/取消选中所有复选框脚本.但是大多数人并不尊重如果我使用"全部选中" - 复选框切换所有复选框,然后取消选中列表中的单个复选框,则仍会选中"全部选中"复选框.
处理这种情况有一种优雅的方式吗?
那么为什么反应抱怨我不能把'tr'作为'td'的孩子呢?
<tr>
<td colSpan={2}>
<tr>
<td>
<Some picture>
</td>
<td>
<some content>
</td>
</tr>
<tr>
<td colSpan={2}>
<p>Paragraph stuff</p>
</td>
</tr>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
也许我必须放另一张桌子或什么?
c# ×5
javascript ×3
reactjs ×2
asp.net ×1
asp.net-mvc ×1
checkbox ×1
dbcontext ×1
google-maps ×1
jquery ×1
maintenance ×1
owin ×1
react-jsx ×1
redux ×1
redux-saga ×1
split ×1
string ×1