某些东西(谁知道,甚至可能是我,但肯定不是故意的)已经改变了Visual Studio 2008中的键盘映射,我无法弄清楚如何将其恢复为默认值.
我认为问题的症状是,当我键入不在文件顶部的using语句中列出的命名空间中的类的名称时,将该命名空间添加到Ctrl.ShiftAltF10文件的快捷方式(展开工具提示),默认情况下,+ (句点)已更改为+ + .可能还有其他关键设置已更改,但这是一个让我烦恼的问题.
devenv /reset我知道我可以通过自定义来修复这一个键绑定,但我不想这样做.我想将所有键绑定规范重置为其默认设置.
假设您有一个具有300个属性且没有后备变量的类,每个属性都返回一个十进制/双精度.
例:
public decimal MathValue { get; set; }
Run Code Online (Sandbox Code Playgroud)
现在你决定将这些值中的每一个都舍入.
我正在寻找最简单的重构方法,而不必重写所有这些属性.
这个实际上有效的东西:D:
public decimal MathValue { get {return Math.Round(MathValue);} set; }
Run Code Online (Sandbox Code Playgroud) 我想为绑定到ItemsControl(在xaml中)的EntityCollection添加一些排序.我也想尽可能简单地做.看来这是不可能的.
如果我将集合包装在实体中的集合属性的"已排序"版本中,则会丢失集合更改通知.我不能使用CollectionViewSource,因为实体集合的BindingListCollectionView不支持对某些该死的原因进行排序(注意:我已经看到了带有"脏"黑客的博客帖子来解决这个问题,所以请不要回答那个kthx ).
是否有一个简单的(几行xaml,几行代码,无论如何)实现这个方法?
我是Entity Framework的新手,我正在努力解决问题.我创建了一个不太复杂的数据库.大约有7个表,其中3个是映射表,用于关联一个表记录w/other.我在这里使用的例子是这样的:
表用户
表角色
表:UserRole
外键映射到我的数据库中.当我2008年VS里面创建一个新的实体模型,图中似乎有关系是正确的,但对于UserRole的表不创建一个表.用户和角色之间的关系映射为多对多.
我的问题是我可以创建新用户,我可以创建新角色,但我无法弄清楚如何创建具有现有角色的新用户.此外,UserRole表可能未在模型中正确映射.到目前为止,这是我的代码:
ObjectQuery<Role> roles = context.Roles;
Role role = context.Roles.Where(c => c.RoleName == "Subscriber").First();
User user = new User
{
DisplayName = "TestCreate2",
Email = "test@test.com",
Password = "test"
};
context.AttachTo("Roles", role);
user.Roles.Add(role);
context.AddToUsers(user);
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
无法更新EntitySet的"UserRoles",因为它具有DefiningQuery,并且元素中不存在支持当前操作的元素.
这是与UserRole表有关的xml:
<EntitySet Name="UserRoles" EntityType="RememberTheJourneyModel.Store.UserRoles" store:Type="Tables" store:Schema="dbo" store:Name="UserRoles">
<DefiningQuery>SELECT
[UserRoles].[Role_id] AS [Role_id],
[UserRoles].[User_id] AS [User_id]
FROM [dbo].[UserRoles] AS [UserRoles]</DefiningQuery>
</EntitySet>
Run Code Online (Sandbox Code Playgroud)
它只是为了弄清楚如何查询上下文,以便它给了我一个实际的角色实体.我敢肯定,问题是事做的UserRole是如何映射,但是我刚开始在这里起步,并没有任何不知道从哪里可能出了问题.
我真的已经搜索了谷歌和这个网站,但我想我没有想出正确的搜索参数来找到一个问题来帮助我解决这个问题.我发现一个问题,说EF有这个问题,但是如果你是映射表使两个列成为主键,它就会自行解决.我不知道该怎么做.这是在数据库中完成的(使用SQL SERVER 2005 EXPRESS)还是在映射中完成?这是一个个人项目,因此我可以根据需要发布有关代码或xml的更多详细信息.任何和所有帮助将不胜感激.
我正在尝试在我的Rails 3应用程序中实现"友谊",如Railscast 163:Self Referential Assosication中所述
我按照描述设置了所有内容.我正在使用一个基本的用户模型登录Authlogic工作正常.但是,当我尝试使用以下链接添加朋友时:
<% for user in @users %>
<%=h user.username %>
<%= link_to "Add Friend", friendships_path(:friend_id => user), :method => :post %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我得到一个重定向http://localhost:3000/friendships?friend_id=2和一个未知的操作无法找到FriendshipsController错误的动作'index',没有进一步的解释.这是特别奇怪的,因为我有一个硬编码重定向回到我当前用户的"User#show"方法(即在添加好友后重定向回配置文件).
如果它有帮助,这是我的"友谊#create"方法:
def create
@friendship = current_user.friendships.build(:friend_id => params[:friend_id])
if @friendship.save
flash[:notice] = "Added friend."
redirect_to :controller => 'users', :action => 'show', :id =>'current_user'
else
flash[:notice] = "Unable to add friend."
redirect_to :controller => 'users', :action => 'show', :id =>'current_user'
end
end
Run Code Online (Sandbox Code Playgroud)
知道是什么原因引起的吗?我发现有人在这里有类似的问题,但我找不到一个明确的解决方案:Rails …
假设我有一个名为Product的表,有三列:Id,CustomerId,Name.Id是主键.模式超出了我的组的控制范围,我们现在要求始终将CustomerId作为所有查询(选择,更新,删除)的参数.这是一个很长的故事,我宁愿不介入......它涉及触发器:-P
所以我的问题是,当我在LinqToEntities中有一个附加实体时,我想保存一些更新(比如我在这种情况下更新名称).如何让它生成SQL:
update Product set Name = @Name where Id=@Id and CustomerId=@CustomerId
Run Code Online (Sandbox Code Playgroud)
除了主键之外,customerId参数包含在where子句中.
谢谢 :-)
在ASP.NET MVC中,有两种方法可以在操作中进行模型绑定.我们称之为"绑定参数方式"和"UpdateModel方式".它们两者几乎完全相同,它们以几乎完全相同的方式完成:
public ActionResult UpdateWithBindArguments(Foo model)
{
Repository.Update(model);
// error handling removed
return RedirectToAction(...)
}
public ActionResult UpdateWithUpdateModel()
{
Foo model;
UpdateModel(model); // part of MVC framework
Repository.Update(model);
// error handling removed
return RedirectToAction(...)
}
Run Code Online (Sandbox Code Playgroud)
正如我所说,这些几乎完全相同.第一个可能稍微更具可读性,但我可以克服它.
在重要的区别,我想,就是怎么你单位对其进行测试:
[TestMethod]
public void TestUpdateWithBindArguments()
{
var model = new Foo() { PropertyName = "Bar" };
var controller = new FooController();
var result = controller.UpdateWithBindArguments(model);
// assert
}
[TestMethod]
public void TestUpdateWithUpdateModel()
{
var formData = new FormCollection() …Run Code Online (Sandbox Code Playgroud) 重要问题不是"Queryable.OfType 做什么,它是什么"我看到的代码如何实现呢?"
反思Queryable.OfType,我看到(经过一些清理):
public static IQueryable<TResult> OfType<TResult>(this IQueryable source)
{
return (IQueryable<TResult>)source.Provider.CreateQuery(
Expression.Call(
null,
((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(
new Type[] { typeof(TResult) }) ,
new Expression[] { source.Expression }));
}
Run Code Online (Sandbox Code Playgroud)
那么让我看看我是否已经这样做了:
null的现在,此方法的效果是返回一个表达式,该表达式告诉提供程序省略返回类型不等于TResult或其子类型之一的任何值.但我看不出上面的步骤是如何实现这一目标的.它似乎创建了一个表达式,该表达式表示返回IQueryable <TResult>的方法,并使该方法的主体只是整个源表达式,而不需要查看类型.是否只是希望IQueryable提供者只是默默地不返回任何不属于所选类型的记录?
所以上面的步骤在某种程度上是不正确的,或者我只是没有看到它们如何导致在运行时观察到的行为?
我有一个在Chrome和FF中完美运行的工具.但是对于任何版本的IE浏览器都会显示缓存信息而不是执行Ajax拉取以检索数据.
这是我的设置:
我有循环的标准:
@foreach (var item in Model)
{
<div class="sizeTDCriteria">
@Html.DisplayFor(modelItem => item.Text)
</div>
<div class="sizeTDCriteriaAction">
@Ajax.ImageActionLink(Url.Content("~/Content/images/icons/edit.png"), "Edit Criteria", "AddOrEditCriteria", "Management", new { competencySectionId = ViewBag.competencySectionId, criteriaId = item.Id }, new AjaxOptions { UpdateTargetId = "AddOrEditCriteriaFormContainer" }, new { @class = "iconPosition" })
@Ajax.ImageActionLink(Url.Content("~/Content/images/icons/delete.png"), "Delete Criteria", "RemoveCriteria", "Management", new { criteriaId = item.Id }, new AjaxOptions { UpdateTargetId = "CompetenciesManagementWrapper" }, new { @class = "iconPosition" })
</div>
}
Run Code Online (Sandbox Code Playgroud)
ImageActionLink只是一个帮助器,可以创建一个内部带有图像的ActionLink,我尝试使用普通的ActionLink进行此操作,同时也会出现问题,因此您可以忽略它.我也尝试用一个<img>带有jQuery触发器的plain来改变整个ImageActionLink ,没有任何区别.
当用户点击编辑链接时,它会对"AddOrEditCriteria"执行ajax调用,ActionResult会找到条件,并将PartialView表单显示回div"#AddOrEditCriteriaFormContainer".到目前为止一切顺利,这在所有浏览器中都能正常运行
但是,当我第二次点击该编辑时,不是进行ajax调用,IE只是显示PartialView,而不是它在缓存中的内容,当所有其他浏览器再次正确地提取数据时(这是必需的,因为该视图允许编辑标准,它可能已被其他人同时编辑).
奇怪的部分是IE正在进行调用但不知何故它从未到达服务器,它只是通过使用结果304来使用缓存.您可以从此网络捕获中看到:
URL Method Result …Run Code Online (Sandbox Code Playgroud) 我是MVC的新手,并且有一个我正在努力的应用程序.我有2个不同的链接,在我的全球范围内有2条路线,这些路线相当类似
路线1
routes.MapRoute("Category", "Movies/{category}/{subcategory}",
new { controller = "Catalog", action = "Index", category = "", subcategory = "" });
Run Code Online (Sandbox Code Playgroud)
路线2
routes.MapRoute("Movie", "Movie/{movie}",
new { controller = "Movie", action = "Index", movie = "" });
Run Code Online (Sandbox Code Playgroud)
当我为第一条路线调用一个动作链接时,它会创建它,因为我认为它应该:
.../Movies/Category/SubCategory
但是,当我创建我的第二个链接时,它填充它像这样:
.../Movie?movieId=ff569575-08ec-4049-93e2-901e7b0cb96a
之前我使用的是字符串而不是guid,它仍然在做同样的事情
.../Movie?movieName=Snatch
我的actionlinks设置如下
<%= Html.ActionLink(parent.Name, "Index", "Catalog",
new { category = parent.Name, subCategory = "" }, null)%>
<%= Html.ActionLink(movie.Name, "Index", "Movie",
new { movieId = movie.MovieId }, null)%>
Run Code Online (Sandbox Code Playgroud)
我的应用程序仍然有效,但我认为这种行为很奇怪.任何帮助都会很棒.
谢谢!
c# ×4
asp.net-mvc ×2
linq ×2
actionlink ×1
itemscontrol ×1
many-to-many ×1
mapping ×1
modelbinders ×1
oftype ×1
properties ×1
sorting ×1
sql ×1
unit-testing ×1