我们正在构建一个可以将我们的api服务出售给多家公司的系统。我们有
从基础上看,它看起来像这样:
"company1" : {
"accounts" : [
account1 :{"users" : [{user1,user2}], accountType},
account2 :{"users" : [{user1,user2}], accountType},
]}
Run Code Online (Sandbox Code Playgroud)
业务规则之一规定,用户注册后不能更改帐户。其他规则规定用户可以更改其类型,但只能在该帐户类型内。
据我了解,我的域模型应称为UserAccount,它应由Account,User和UserType实体组成,其中Account是聚合根。
class UserAccount{
int AccountId;
string AccountName;
int AccountTypeId;
List<UserTypes> AvailableUserTypesForThisAccount
User User
void SetUserType(userTypeId){
if(AvailableUserTypesForThisAccount.Contains(userTypeId) == false)
throw new NotSupportedException();
}
}
Run Code Online (Sandbox Code Playgroud)
使用此汇总,我们可以更改用户的类型,但只能是可用于该帐户的类型(不变式之一)。
当我从存储库中获取UserAccount时,我将获取所有必要的表(或实体数据对象)并将其映射为聚合,然后将其作为整体返回。
我的理解和建模是否朝着正确的方向发展?
我们有一个 API,它将 MS SQL 地理类型转换为众所周知的文本,并将其发送到前端,然后将 WKT 发送到 OpenLayer 地图,后者呈现画布(边界、区域等)。
我正在寻找一种方法来减少客户端的有效负载,并将多边形、multypoligons 和地图一般转换为后端的 png。
我尝试的是将画布转换为 base64,并将其另存为 PNG。效果很好,但我需要一个完整的后端解决方案。
我尝试使用 SharpMap,但它已经很旧了,它导致了我的依赖性问题,而且我没有设法让它工作。
我找到了一个测试 SHP 文件,并尝试将其渲染到 Windows 窗体中的 PictureBox 进行测试,但我得到的只是一个空的白框。
SharpMap.Map myMap = new SharpMap.Map(new Size(600, 300));
myMap.BackColor = Color.White;
var shapeFileProvider = new SharpMap.Data.Providers.ShapeFile(@"C:\Users\test\Downloads\FRA_adm\FRA_adm1.shp", true);
SharpMap.Layers.VectorLayer myLayer = new SharpMap.Layers.VectorLayer("World Countries");
myMap.Layers.Add(myLayer);
myMap.ZoomToExtents();
myLayer.DataSource = shapeFileProvider;
pictureBox1.Image = myMap.GetMap();
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法?
编辑:我什至尝试过geoserver,但它看起来不支持空间地理,而只支持几何。
我需要找到一种方法将边界、区域、国家/地区转换为 c# 后端中的图像。
编辑 2:您正在使用 SHP 文件进行测试,但我真正想要的是从 Sql Server Geography 类型呈现它。
默认情况下,是否可以在 swagger 中隐藏所有端点,并仅显示我用某种属性标记的端点?
我有一个Article具有以下结构的实体
public class Article
{
public decimal Price {get;set;}
public decimal? SalePrice {get;set;}
public bool OnSale {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我需要做的是按照以下标准按价格查询文章:如果文章正在销售,请拿它的销售价格,如果没有,请按正常价格.
举个例子:
按价格订购时,订单应该是
B(价格4)
A(价格5) - 导致它的销售价格
C(价格22)
我试过了
IQueryable<Article> articlesQuery = dal.Where<Article>(m => m.Active);
articlesQuery = articlesQuery.OrderBy(m => m.OnSale ? m.PriceSale : m.PriceSale);
Run Code Online (Sandbox Code Playgroud)
但它没有给出理想的结果.
任何帮助表示赞赏.
我正在使用DDD构建身份验证微服务/域,我仍然无法识别每个服务所属的位置.此时我不确定身份验证服务是属于域服务还是应用程序服务.
我应该在域serrvice中包装此行为,并通过应用程序服务公开响应对象,或者这应该保持原样 - 作为应用程序服务.
public class AuthenticationService : IAuthenticationService
{
IAuthUnitOfWork _uow;
IUserRepository _userRepository;
IUserTokenFactory _userTokenFactory;
public AuthenticationService(IUserTokenFactory userTokenFactory, IUserRepository userRepository,
IAuthUnitOfWork uow)
{
_userTokenFactory = userTokenFactory;
_userRepository = userRepository;
_uow = uow;
}
public async Task<UserTokenResponse> AuthenticateAsync(string email, string password)
{
var user = await _userRepository.GetByEmailAndPasswordAsync(email, password);
//TODO: Add null check for user
var userToken = await _userTokenFactory.CreateWithAsync(user);
await _uow.SaveChangesAsync();
return new UserTokenResponse
{
ExpiressOn = userToken.ExpiressOn,
Token = userToken.Token
};
}
}
Run Code Online (Sandbox Code Playgroud) 域服务实现应位于DDD项目结构中的什么位置?如果我们有IDomainInterface和DomainInterface实施,应DomainInterface执行驻留在解决方案/项目的基础设施或核心/域的一部分?
c# ×3
asp.net ×1
ddd-service ×1
geography ×1
lambda ×1
linq ×1
linq-to-sql ×1
openlayers ×1
polygons ×1
sqlgeography ×1
swagger ×1
swashbuckle ×1