可能重复:
首先拆分然后加入字符串的子集
我正在尝试将一个字符串拆分成一个数组,取出第一个元素(使用它),然后将数组的其余部分连接成一个单独的字符串.
例:
theString = "Some Very Large String Here"
Run Code Online (Sandbox Code Playgroud)
会成为:
theArray = [ "Some", "Very", "Large", "String", "Here" ]
Run Code Online (Sandbox Code Playgroud)
然后我想在变量中设置第一个元素并在以后使用它.
然后我想将数组的其余部分加入一个新字符串.
所以它会成为:
firstElem = "Some";
restOfArray = "Very Large String Here"
Run Code Online (Sandbox Code Playgroud)
我知道我可以theArray[0]用于第一个元素,但是如何将数组的其余部分合并为一个新字符串?
我正在尝试使用模拟的DbContext为我的服务创建单元测试.我创建了一个IDbContext具有以下功能的界面:
public interface IDbContext : IDisposable
{
IDbSet<T> Set<T>() where T : class;
DbEntityEntry<T> Entry<T>(T entity) where T : class;
int SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我真正的上下文实现了这个接口IDbContext和DbContext.
现在我正在尝试IDbSet<T>在上下文中模拟它,所以它返回一个List<User>代替.
[TestMethod]
public void TestGetAllUsers()
{
// Arrange
var mock = new Mock<IDbContext>();
mock.Setup(x => x.Set<User>())
.Returns(new List<User>
{
new User { ID = 1 }
});
UserService userService = new UserService(mock.Object);
// Act
var allUsers = userService.GetAllUsers();
// Assert
Assert.AreEqual(1, allUsers.Count());
}
Run Code Online (Sandbox Code Playgroud)
我总是得到这个错误.Returns: …
我有客户端和服务器在不同的端口上运行.服务器正在运行Web API 2(v5.0.0-rc1).
我尝试安装Microsoft ASP.NET Web API跨源支持包并启用它WebApiConfig.cs.它给了我EnableCors()功能,所以包正确安装.
在这里你可以看到我的Register()功能WebApiConfig.cs:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
}
Run Code Online (Sandbox Code Playgroud)
GET请求工作正常.但在发送时POST,我得到以下内容:
OPTIONS http://localhost:19357/api/v1/rooms? 404 (Not Found) angular.js:10159
OPTIONS http://localhost:19357/api/v1/rooms? Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin. angular.js:10159
XMLHttpRequest cannot load http://localhost:19357/api/v1/rooms. Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)
根据Fiddler的说法,它只发送OPTIONS请求.POST之后不发布.
所以我猜测config.EnableCors(cors);在WebApiConfig.cs没有做任何事情,这导致服务器拒绝客户端/浏览器发送POST请求.
你知道如何解决这个问题吗? …
我正在使用EF Code-First到现有的数据库方法,并IsActive在我的数据库中有一个字段.问题是该领域VARCHAR应该是什么时候boolean.我无法更改数据库架构.
数据库中的示例值为"Y" (true)或"N" (false)
映射时,我想将这些值转换为true/false,并使我的Entity类保持布尔值.
这可能吗?
我的实体和映射类如下,但我想将该IsActive字段更改为布尔值.
public class Employee
{
public int ID { get; set; }
public string SSN { get; set; }
public string Email { get; set; }
public string IsActive { get; set; }
}
public class EmployeeMap : EntityTypeConfiguration<Employee>
{
public EmployeeMap()
{
this.ToTable("Employees");
this.HasKey(t => t.ID);
this.Property(t => t.ID).HasColumnName("ID_Employee");
this.Property(t => t.SSN).HasColumnName("sReference");
this.Property(t => t.Email).HasColumnName("Email");
this.Property(t => t.IsActive).HasColumnName("IsActive");
} …Run Code Online (Sandbox Code Playgroud) 我们有一个4人的开发团队,最近搬到了Git.我们希望通过分支和合并来学习有关工作流程的最佳实践.
我们正在使用Git Flow的轻量级版本.我们有一个dev,staging和一个master分支,它们彼此都是线性的.
最重要的是,我们使用功能和修补程序分支来处理新功能和修复错误.
我有以下问题:
我认为我们应该从master分支并合并功能分支,因为dev中可能存在一些我们可能不希望合并到staging和master的东西.
你有什么意见?什么是最佳做法?
我正在使用ASP.NET MVC 4和Entity Framework 5.我有模型类和实体映射来将现有表映射到那些模型类.这一切都很好,工作得很好.
现在我想嘲笑这个.我创建了Unit Of Work,它接受DataContext并使用Generic Repository.在那之后,我构建了服务,以便能够立即从许多存储库获取数据,并且只需要有一个DataContext实例.这也很有效.
现在问题:我想用模拟数据测试服务.当我创建Unit Of Work实例时,我希望能够插入一个被模拟的DataContext而不是真正的DataContext.
我试图创建一个IContext接口,让真实的和模拟的DataContext实现,但遇到了DbSet的问题.我试图使用IDbSet并创建一个FakeDbSet但没有成功.我还在互联网上读到用IDbSet模拟上下文并使用FakeDbSet是一种糟糕的方法.
你知道最好的方法是什么?我现在拥有的是我想保留的行为,但是我真的希望能够在DataContext中模拟Model类中的数据.
我知道实体框架已经附带了工作单元行为,并且您不需要在其上添加额外的行为.但是我想把它包装在另一个跟踪所有存储库的类中(称为UnitOfWork类).
编辑:我写了两篇文章,用LINQ和Entity Framework解释我的解决方案.
http://gaui.is/how-to-mock-the-datacontext-linq/
http://gaui.is/how-to-mock-the-datacontext-entity-framework/
这是我的代码:
IRepository.cs
public interface IRepository<T> where T : class
{
void Add(T entity);
void Delete(T entity);
void Update(T entity);
T GetById(long Id);
IEnumerable<T> All();
IEnumerable<T> Find(Expression<Func<T, bool>> predicate);
}
Run Code Online (Sandbox Code Playgroud)
IUnitOfWork.cs
public interface IUnitOfWork : IDisposable
{
IRepository<TEntity> GetRepository<TEntity>() where TEntity : class;
void Save();
}
Run Code Online (Sandbox Code Playgroud)
Repository.cs
public class Repository<T> : IRepository<T> where T : class
{
private readonly IDbContext …Run Code Online (Sandbox Code Playgroud) 我想转到http://myserver并能够将帮助页面作为默认主页,因此访客http://myserver应首先看到的是帮助页面.
我有一个默认路由设置如下:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Run Code Online (Sandbox Code Playgroud)
然后我的帮助页面区域注册设置如下:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"HelpPage_Default",
"doc/{action}/{apiId}",
new { controller = "Help", action = "Index", apiId = UrlParameter.Optional });
HelpPageConfig.Register(GlobalConfiguration.Configuration);
}
Run Code Online (Sandbox Code Playgroud)
当我改变RouteConfig时controller,"Help"我得到:
未找到视图"索引"或其主数据或视图引擎不支持搜索的位置
当我将帮助页面路由更改为"{controller}/{action}/{apiId}"我的AttributeRoutes时停止工作.
是否有一些简单的方法来使ASP.NET帮助页面成为默认主页?
asp.net-mvc-areas asp.net-mvc-4 attributerouting asp.net-web-api-helppages
我有15个C#项目的解决方案,我正在尝试为它们建立一个高效的git存储库.我应该在该级别上创建存储库还是在解决方案下为每个项目创建存储库?
WebServices/
|- WebServices.sln
|- WebService1/
`- WebService1.csproj
|- WebService2/
`- WebService2.csproj
Run Code Online (Sandbox Code Playgroud)
该解决方案有一个项目引用,../framework/framework.csproj它是一个单独的存储库,所有其他项目都有引用.解决方案下的项目没有任何关联,但它们都使用框架.
我希望框架的任何更改都会传递给项目.
你有什么指导我如何以最好的方式实现这一目标吗?
我想将[FirstTime]属性放在控制器函数之上,然后创建一个FirstTimeAttribute具有一些逻辑来检查用户是否输入了他的名字,并将其重定向到/Home/FirstTime他是否已经输入.
所以不要做:
public ActionResult Index()
{
// Some major logic here
if (...)
return RedirectToAction("FirstTime", "Home");
return View();
}
Run Code Online (Sandbox Code Playgroud)
我会这样做:
[FirstTime]
public ActionResult Index()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我正在使用通用存储库模式Repository<TEntity>,其中存储库通过上下文访问实体.然后我有一个服务层接受构造函数中的上下文.现在,我可以在服务中拥有多个存储库,通过相同的上下文访问实体.很标准.这非常适合映射到实体的表/视图,但我无法对通过存储过程传递的数据进行单元测试.
这是我目前的设置:
IDbContext:
public interface IDbContext : IDisposable
{
IDbSet<T> Set<T>() where T : class;
DbEntityEntry<T> Entry<T>(T entity) where T : class;
void SetModified(object entity);
int SaveChanges();
// Added to be able to execute stored procedures
System.Data.Entity.Database Database { get; }
}
Run Code Online (Sandbox Code Playgroud)
语境:
public class AppDataContext : DbContext, IDbContext
{
public AppDataContext()
: base("Name=CONNECTIONSTRING")
{
base.Configuration.ProxyCreationEnabled = false;
}
public new IDbSet<T> Set<T>() where T : class
{
return base.Set<T>();
}
public void SetModified(object entity)
{
Entry(entity).State = …Run Code Online (Sandbox Code Playgroud)