假设有一个 Employee 类,业务需求之一是 EmployeeName 变得唯一。现在使用 3 层架构,
第 1 层:表示
层 第 2 层:域模型 + 数据服务类(业务逻辑层)
第 3 层:数据访问类 + 存储过程(数据访问层)
既然上面的需求是业务需求,您认为这条规则最好放在哪里?
选项 1:数据库中的唯一键约束
选项 2:检查业务层数据服务类中的条件,以便无论使用哪个数据层,都将业务逻辑封装在该层中?
我有如下模型
class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
class Employee : Person
{
public string Dep { get; set; }
}
class Client : Person
{
public string Type { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我想按如下Person属性查询Employee
context.Set<Person>().Where(x => ((Employee)x).Dep == "dep").ToList();
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误
无法将类型“ DomainModel.Person”强制转换为类型“ DomainModel.Employee”。LINQ to Entities仅支持强制转换EDM基本类型或枚举类型。
我知道我可以简单地使用
context.Set<Employee>().Where(x => x.Dep == "dep").ToList();
Run Code Online (Sandbox Code Playgroud)
但是问题是我使用了通用搜索控件,该控件只能处理一种类型的搜索,搜索条件将作为该确定类型的lambda表达式传递给该控件,并且搜索语句也将返回为这则作为谓词传递lambda表达式Where的方法,现在我想用这个搜索控制搜索Employee,并Person在同一时间,因为搜索控件可以只处理一种类型的我通过父类型它是Person如此我可以在搜索中访问其所有子类型属性,但是遇到了上面提到的问题。任何的想法?
我正在尝试为我的Android应用程序创建启动画面,如此链接http://developer.xamarin.com/guides/android/user_interface/creating_a_splash_screen/所示
不幸的是,这个链接只是展示了如何使用drawable制作闪屏.但我需要做的是使用布局创建一个启动画面,以便我可以轻松自定义它的外观并使其与不同的屏幕尺寸兼容.
谢谢
我有一个像下面这样的DataService类
public class LessonDataService
{
IUnitOfWork unitOfWork = UnitOfWorkFactory.CreateUnitOfWork();
public Lesson FindById(int id)
{
try
{
return unitOfWork.Lessons.FindById(id);
}
catch (Exception ex)
{
throw exception;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,UnitOfWork是在DataService类中构造的.我也不希望通过构造函数传递UnitOfWork,我不希望UI代码打扰UnitOfWork我只是想让它调用DataService类并让它完成剩下的工作.有任何想法吗?
我不想在我的 Xamarin.iOS 应用程序中使用故事板,因此我执行了以下操作:
1-删除了故事板文件。
2- 更新了 plist.info 文件应用程序 > 主界面,使其没有价值。
3- 将以下代码添加到AppDelegate文件中。
[Export ("application:didFinishLaunchingWithOptions:")]
public bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)
{
// create a new window instance based on the screen size
Window = new UIWindow(UIScreen.MainScreen.Bounds);
var controller = new UIViewController();
controller.View.BackgroundColor = UIColor.LightGray;
controller.Title = "My Controller";
var navController = new UINavigationController(controller);
Window.RootViewController = navController;
// make the window visible
Window.MakeKeyAndVisible();
return true;
}
Run Code Online (Sandbox Code Playgroud)
但是在这样做之后,我在启动屏幕完成后在模拟器上收到了一个黑屏。即使是全新的项目也会发生这种情况。我已上载这些步骤和问题的样本新的项目在这里。
我正在使用 Visual Studio 2019 - Xamarion.iOS 11.8.3 - XCode …
c# ×3
xamarin ×2
3-tier ×1
children ×1
factory ×1
ios ×1
layout ×1
screen ×1
unit-testing ×1
validation ×1