我有一个现有的项目,我希望迁移到ASP.NET 5.
目前,它是一个简单的ASP.NET Web窗体项目,它引用了2个DLL:
通常我不应该触摸那些目前工作正常的2个DLL.现在我想用2个新组件替换ASP.NET Web Forms项目:
我一直在玩VS2015中提供的模板,我也一直在阅读关于身份验证的所有内容,我必须说,我现在对于我真正需要的东西更加困惑...... :(
我的后端API需要MVC吗?所有的例子都是用ASP.NET MVC完成的,但是如果我有一个完全工作的SPA前端,我不需要一个简单的RESTful服务吗?
身份验证需要什么?我需要ASP.NET身份吗?Identity是旧会员的新版本吗?是否负责创建令牌?我已经拥有一个包含所有用户和散列密码的生产数据库.我的Domain.dll程序集还具有验证用户凭据所需的所有代码.
如果我想允许谷歌或Facebook等其他登录服务,我还需要什么?我使用ASP.NET 4.5和ASP.NET 5模板创建了一些Web应用程序,以查看事情是如何完成的,但这就是混乱变得更糟的地方.ASP.NET 4.5模板使用Owin的东西(我不熟悉),而ASP.NET 5模板则没有.
理想情况下,这就是我真正想要的:我想创建一个具有最少依赖性的Web API项目,我想避免使用会话和cookie,我希望能够使用Google和Facebook的服务登录
谢谢!
我在登录时无法刷新的组件遇到困难.
该组件是navbar.component,其中包含指向我的页面/组件的链接.在它上面,有一个"登录"链接,呈现login.component,我可以在其上提供用户名和密码,然后单击登录按钮.login.component使用user.service,它使用login.component提供的用户名和密码调用后端,存储收到的令牌并重定向到'/'.
此时,应该隐藏navbar.component上的"登录"链接并显示"注销"链接,但在我单击导航栏上的其他链接之前没有任何反应.
2个链接如下:
<a [hidden]="userService.isLoggedIn" [routerLink]="['Login']">Login</a>
<a [hidden]="!userService.isLoggedIn" (click)="userService.logout();" href="javascript:void(0)">Logout</a>
Run Code Online (Sandbox Code Playgroud)
我理解存储令牌并从user.service重定向不会触发更改检测,并且我的属性userService.isLoggedIn不是可观察的,所以我知道我遗漏了一些东西,但不确定该方法是什么/应该是什么.
我已经尝试注入ApplicationRef来调用tick()方法,希望这会触发更改检测,但是失败了.
我应该使我的属性userService.isLoggedIn是一个可观察的吗?
我有一个实体,数据来自数据库,但是,它的一些属性填充了来自另一个源(文件系统)的数据,所以我所做的是我的存储库,而不是返回我的实体,返回一个代理对象,派生自主要实体,所以当我尝试保存或更新时的问题是它说该类没有持久性......
是否可以保存派生类但作为主类?我的代理对象与真实代理对象相同,只是它覆盖了几种方法.
谢谢!
Seb :)
我将头发拉过似乎是内存泄漏的地方,但我找不到原因:(
我在自己的PC上构建了一个应用程序,这是一个拥有大量内存的笨重的野兽,所以我从未意识到我的进程会消耗这么多的内存。我只有在将代码发布到内存有限的生产环境后才意识到。
我使用了许多不同的技术和模式,包括WCF,但是现在我已经剥离了大部分代码,以找出消耗了这么多内存的原因...
这是应用程序的最简化版本,1个实体,1个映射以及一个从数据库检索的简单过程,运行时,我可以看到任务管理器中的过程不断增长:
using System;
using System.Linq;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using FluentNHibernate.Mapping;
using NHibernate;
using NHibernate.Linq;
namespace ConsoleApplication18
{
public class Program
{
private static void Main()
{
var i = 0;
while ( i < 1000000 )
{
ISession session = BuildSessionFactory().OpenSession();
ITransaction transaction = session.BeginTransaction();
var users = session.Query< User >().ToList();
transaction.Commit();
transaction.Dispose();
transaction = null;
session.Dispose();
session = null;
Console.WriteLine( users.Count );
users = null;
i++;
}
}
private static ISessionFactory BuildSessionFactory()
{
return Fluently.Configure() …Run Code Online (Sandbox Code Playgroud) 请原谅我,如果我有点不清楚,我刚刚开始使用NHibernate/LINQ/Lambda表达式,我实际上不确定要寻找什么...
我在过去的4到5年里一直在使用.NET 2.0,除了我自己之外没有机会进化,这就是我现在开始学习新技术的原因:)
我一直在阅读很多博客和帖子,并开始了一个个人的小项目,我尝试尽可能地使用Repository模式.
我现在处于以下情况:
我的Repository实现看起来像这样:
public class GenericRepository<T> : IGenericRepository<T> where T : class
{
...
public virtual IQueryable<T> All()
{
IList<T> entities = Session
.CreateCriteria( typeof( T ) )
.List<T>();
return entities.AsQueryable<T>();
}
...
}
Run Code Online (Sandbox Code Playgroud)
所以在我的核心DLL中,我可以获得对我的存储库的引用,并执行以下操作:
IList<Person> people = myRepository.All().ToList();
Run Code Online (Sandbox Code Playgroud)
这看起来效果很好,它查询数据库并返回Person表中的所有行.
但是,现在我想要做的是添加谓词:
IList<Person> daves = myRepository.All().Where(p => p.Name == "Dave").ToList();
Run Code Online (Sandbox Code Playgroud)
这很好,但当然会发生的事情是NHibernate首先查询数据库以返回所有行,然后LINQ过滤结果只返回名称为"Dave"的结果.
我一直在寻找互联网,但我还没有找到如何实现这一点,我发现很多东西似乎已经过时了,例如,我经常看到调用NH session.Linq()方法,我看着我的dll,这种方法无处可寻......
如果有人能指出我正确的方向,也许还有一些例子,我会非常感激.
非常感谢你!
我有一个包含类别的表,每个类别都有一个ID,一个名称和一个ParentID.问题是有3个级别,父类别,子类别和子类别.
我可以使用simple SELECT和a WHERE ParentID IS NULL子句提取父类别:
SELECT *
FROM Category
WHERE ParentID IS NULL
Run Code Online (Sandbox Code Playgroud)
但是,WHERE ParentID IS NOT NULL子句将返回子类别和子类别.
我正在寻找一种方法来只提取子类别,只提取子类别.
我需要写一些可以得到相同结果的东西:
var result = collection.Where( o => o.Name.IndexOf( "some_string2" ) != -1 || o.Name.IndexOf( "some_string_2" ) != -1 || o.Name.IndexOf( "some_string3" ) != -1 )
Run Code Online (Sandbox Code Playgroud)
要检查的字符串的数量和值(some_string_1,2和3)是未知的(来自DB),所以更通用的...
我试过以下,但失败了......
var stringsToCheck = someCommaSeparatedStrings.ToLower().Split( ',' ).ToList();
var result = collection.Where( o => stringsToCheck.Contains( o.ToLower() ) );
Run Code Online (Sandbox Code Playgroud)
换句话说,我需要从集合中检索名称包含一些特定字符串的所有对象.
nhibernate ×3
c# ×2
linq ×2
.net ×1
angular ×1
asp.net-core ×1
fluent ×1
memory-leaks ×1
observable ×1
predicates ×1
save ×1
select ×1
sql ×1
sql-server ×1
t-sql ×1
token ×1