我一直听说实体框架流利的api,但我很难找到一个很好的参考.它是什么?
我们使用实体框架和提供的建模工具.这就是全部吗?或者是不同的东西?
同样,如果问题不是太宽泛,POCO是什么?我知道它代表Plain Old CLR Objects,但对于我已经使用EF设计模型工具的人来说,这对我意味着什么呢?如果这个问题太模糊,那么请忽略它.我刚刚在这里学习,你愿意提供的任何信息都很有帮助.
目前我正在将我的应用程序部署到共享托管环境,并且代码优先与迁移一直很有效,除了一个小的打嗝.每次我想推送网站时,我都必须使用"Update-Database -script"选项,因为我必须在每个表名前加上,[dbo]
因为默认情况下共享主机会创建一个与数据库用户名同名的默认模式名称.
如果我登录我的共享主机并创建数据库,那么我必须创建一个用户.如果我将该用户命名为admin,则代码优先创建,同时以管理员身份登录,如"[admin].[BlogPosts]".当应用程序运行时,所有表都被创建但我得到了EF异常,因为它说"[dbo].[BlogPosts]"无效.如果我将表的架构名称重命名为"[dbo]"而不是"[admin]"来修复它.
为了解决这个问题,我必须生成一个手动执行的迁移脚本,并在所有表名前添加"[dbo]",因为脚本只按名称引用表,而不是它们的模式和名称.
有没有一种简单的方法来解决这个问题?如果我所要做的就是发布应用程序和一切正常工作,那将是如此美好.如果它不是模式名称的差异,它将是一键式部署,一切都将是光荣的.
我是MVC的新手,我正在尝试创建自己的扩展方法,以便我可以添加到我的剃刀视图中可用的html助手.Html.DropDownListFor()
允许您为模型上的任何属性创建下拉列表.我想创建一个叫做的帮助程序Html.StateDropDownListFor()
完全相同的事情,除了加载美国所有50个州的下拉列表.这样我就不必为我创建的每个状态下拉列表创建一个SelectList.最简单的方法是什么?现在我有这个:
public static class ExtensionMethods
{
public static MvcHtmlString StateDropDownList(this HtmlHelper html)
{
// ???
}
}
Run Code Online (Sandbox Code Playgroud)
我甚至关闭了吗?我不想重建整个文本框助手,我只是想创建一个利用现有文本框助手的助手,但是为我做了SelectList.在我的观点中,我可以这样做Html.StateDropDownList(x => x.State)
非常感谢您的回答.
这是答案!
你们是一个很好的帮助,谢谢!这是完整的扩展方法,以防其他任何人使用它.
public static MvcHtmlString StateDropDownListFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression)
{
Dictionary<string, string> stateList = new Dictionary<string, string>()
{
{"AL"," Alabama"},
{"AK"," Alaska"},
{"AZ"," Arizona"},
{"AR"," Arkansas"},
{"CA"," California"},
{"CO"," Colorado"},
{"CT"," Connecticut"},
{"DE"," Delaware"},
{"FL"," Florida"},
{"GA"," Georgia"},
{"HI"," Hawaii"},
{"ID"," Idaho"},
{"IL"," Illinois"},
{"IN"," Indiana"},
{"IA"," Iowa"},
{"KS"," Kansas"},
{"KY"," …
Run Code Online (Sandbox Code Playgroud) 我有一个类型为List的模型的视图,我想在页面上放置一个下拉列表,其中包含列表中的所有字符串作为下拉列表中的项目.我是MVC的新手,我怎么做到这一点?
我试过这个:
@model List<string>
@Html.DropDownListFor(x => x)
Run Code Online (Sandbox Code Playgroud)
但那引发了一个错误.任何帮助表示赞赏.
我的控制器中有一个方法接受一个对象作为参数并返回一个JsonResult.此对象的一个属性是具有三个可能值的枚举.我假设当客户端为该属性传入一个int时,它将填充枚举,但它没有,它默认为0,枚举设置为第一个可能的选择.
有什么建议?
我刚刚加入了EF 5并使用了他们的代码优先迁移工具,但是当我尝试启用迁移时,我似乎遇到了错误.
我输入Enable-Migrations
包管理器控制台,然后说
没有从当前项目中找到的DbContext派生的类.
编辑生成的Configuration类以指定启用迁移的上下文.
为项目MyApp.MvcUI启用了代码优先迁移.
然后它在我的MvcUI项目中创建一个Migrations文件夹和一个Configuration类.事实上,我的DbContext存在于名为MyApp.Domain的类库项目中.它应该在该项目中完成所有这一切,并且应该没有问题找到我的DbContext.
c# entity-framework ef-code-first ef-migrations entity-framework-5
好的,所以我是EF和LINQ的新手.我已经弄清楚如何INSERT和DELETE但由于某种原因UPDATE似乎逃脱了我的掌握.
以下是我的代码示例:
EntityDB dataBase = new EntityDB();
Customer c = new Customer
{
Name = "Test",
Gender = "Male
};
dataBase.Customers.AddObject(c);
dataBase.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
上面创建并添加了一个记录就好了.
Customer c = (from x in dataBase.Customers
where x.Name == "Test"
selext x).First();
dataBase.Customers.DeleteObject(c);
dataBase.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
以上有效删除了指定的记录.
现在我该如何更新?我似乎无法UpdateObject()
在实体集合上找到" "方法.
c# linq linq-to-entities entity-framework entity-framework-4
我有一个自定义WriteLine(string)
方法的对象.像这样的东西:
public void WriteLine(string text)
{
this.StringList.Add(text);
}
Run Code Online (Sandbox Code Playgroud)
string.Format()
使用此方法复制功能的最简单方法是什么?例如:我目前经常发现自己在做的是:
myObj.WriteLine(string.Format("Hello, {0}", name));
Run Code Online (Sandbox Code Playgroud)
如果您创建一个新的控制台应用程序,他们的WriteLine()
方法版本完全符合我的要求:
Console.WriteLine("Hello, {0}", name);
Run Code Online (Sandbox Code Playgroud)
他们不需要打电话string.Format()
.让你的方法以某种方式接受它是否容易?或者我将不得不创建一千个方法重载?像这样的东西:
public void WriteLine() { ... }
public void WriteLine(string text) { ... }
public void WriteLine(string text, object arg0) { ... }
public void WriteLine(string text, object arg0, object arg1) { ... }
public void WriteLine(string text, object arg0, object arg1, object arg2)
{
this.StringList.Add(string.Format(text, arg0, arg1, arg2));
}
// etc etc etc
Run Code Online (Sandbox Code Playgroud)
这是唯一合乎逻辑的方法吗?欢迎任何建议:)
很容易看出特定模块所依赖的模块,但我似乎无法了解如何查看哪些模块依赖于特定模块.有一个简单的方法吗?如果是这样,有没有办法以编程方式执行此操作?
我使用Windows Azure网站来托管node.js应用程序.到目前为止,一切都很好,除了我的自定义错误.在我的节点应用程序中,我有一个错误处理程序,可以在我的本地计算机上呈现自定义404和自定义500错误页面.但是,当我发布到azure时,当我将statusCode设置为除200以外的任何值时,它会覆盖响应.
如果我没有将500或404 statusCode传递给响应,那么这不会发生,但我确实希望状态代码能够进入浏览器.在本地我得到我的自定义错误页面就好了:
但是,在azure网站上,它只返回一行文字:
由于发生内部服务器错误,无法显示页面.
我尝试创建自己的web.config以覆盖默认的自定义错误,但似乎没有任何效果.这是我的web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<customErrors mode="off" />
</system.web>
<system.webServer>
<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode"/>
</handlers>
<rewrite>
<rules>
<rule name="StaticContent">
<action type="Rewrite" url="public{REQUEST_URI}"/>
</rule>
<rule name="DynamicContent">
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
</conditions>
<action type="Rewrite" url="app.js"/>
</rule>
</rules>
</rewrite>
<iisnode
debuggingEnabled="true"
devErrorsEnabled="true"
debuggerPathSegment="debug"
nodeProcessCommandLine=""%programfiles(x86)%\nodejs\node.exe""
logDirectory="..\..\LogFiles\nodejs"
watchedFiles="*.js;iisnode.yml;node_modules\*;views\*.jade;views\*.ejb;routes\*.js" />
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我不确定iisnode
(将请求路由到node.js的iis的扩展名)负责覆盖我的错误页面或者iis本身是否负责.有什么建议?
c# ×8
asp.net-mvc ×3
asp.net ×2
node.js ×2
.net ×1
azure ×1
dependencies ×1
enums ×1
html ×1
html-helper ×1
iisnode ×1
linq ×1
methods ×1
module ×1
npm ×1
orm ×1
razor ×1
sql ×1
string ×1
web-config ×1